home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EuroCD 3
/
EuroCD 3.iso
/
Communication
/
Citadel_BBS
/
Docs
/
install3.man
< prev
next >
Wrap
Text File
|
1998-06-24
|
168KB
|
4,038 lines
C I T A D E L - 8 6
V3.40
INSTALLATION MANUAL
Copyright 1989 - 1991
by Hue, Jr.
C-86 Test System Sysop
(612) 470-9635
91Oct07
Table of Contents
I. Introduction & Requirements . . . . . . . . . . . . . . . . 2
I.1 ... but first, a caveat. . . . . . . . . . . . . . . . . 2
I.2 Introduction . . . . . . . . . . . . . . . . . . . . . . 2
I.3 Requirements . . . . . . . . . . . . . . . . . . . . . . 3
II. Installation . . . . . . . . . . . . . . . . . . . . . . . 4
II.1 Tickling DOS configurations . . . . . . . . . . . . . 4
II.2 Making your modem do the right thing . . . . . . . . . 4
II.3 Citadel-86 Operating Procedures
(and other epic fantasies) . . . . . . . . 5
II.3.a Who's this masked Temporary file, anyways? . . 6
II.3 (con't) . . . . . . . . . . . . . . . . . . . . . . . 6
II.4 Other Data Files . . . . . . . . . . . . . . . . . . . 7
II.5 EASE . . . . . . . . . . . . . . . . . . . . . . . . . 8
II.6 The ole' configuration file . . . . . . . . . . . . . 8
II.6.a But first, a word on moral values ... . . . . . 9
II.6.b Section 1 of CtdlCnfg.Sys . . . . . . . . . . . 10
Part 1 of Section 1: Meaningless Miscellanea . . . . 10
Part 2 of Section 1: Required Odd Stuff . . . . . . 12
Part 3 of Section 1: Data File Sizes . . . . . . . . 13
Part 4 of Section 1: Data File Locations . . . . . . 14
Part 5 of Section 1: Policy Options . . . . . . . . 15
Part 6 of Section 1: Modem Handling . . . . . . . . 18
Part 7 Video Options . . . . . . . . . . . . . . . 22
II.6.c Section 2 of CtdlCnfg.Sys . . . . . . . . . . . 22
II.6.d Section 3 of CtdlCnfg.Sys . . . . . . . . . . . 32
II.7 The Big Step -- Your first experience with CONFG . . . 36
II.8 CTDL -- That Childhood Experience . . . . . . . . . . 37
II.9 When the inevitable happens . . . . . . . . . . . . . 38
II.10 Installation -- Advanced Topics . . . . . . . . . . . 38
II.10.a Command Line options . . . . . . . . . . . . . 38
II.10.b BAT files and program termination ERRORLEVELS. 40
II.10.c Making BAT files and command line options
work for you . 41
II.10.d Result Code and Call Progress Detection . . . 43
II.10.d.1 Restrictions on Result Codes . . . . . . . . 46
II.10.e Extreme options in CtdlCnfg.Sys . . . . . . . 46
III. Zenith Z-100 Notes . . . . . . . . . . . . . . . . . . . . 48
III.1 Introduction . . . . . . . . . . . . . . . . . . 48
III.2 Scary but Innocuous Behaviors . . . . . . . . . 48
III.3 Result Codes . . . . . . . . . . . . . . . . . . 48
Appendix -- Exhibit copy of CtdlCnfg.Sys. . . . . . . . . . . . 50
-1-
I. Introduction & Requirements
Hi. This is the Citadel-86 Installation Manual. This manual comes in
three parts. In the first part we hope to present a very short intro-
duction to Citadel-86 and give you an idea of the requirements of running
Citadel-86.
The second part of the Manual will contain a comprehensive (we hope!)
discussion of general operation of Citadel-86 and a step-by-step
installation guide.
The third section contains notes specific to the Zenith Z-100, as
contributed by both the author of this manual and System Operators
using Z-100s as their hardware platform.
If you are looking for documentation covering the day to day operations
of Citadel-86, please read OPER3.MAN. Just ignore the blood spots
in there ...
I.1 ... but first, a caveat.
Citadel-86 has a number of eccentricities in it; in fact, some people
might describe it as one giant eccentricity, and an explanation is,
perhaps, in order. One of the authors of this manual, Hue, Jr., is also
the principal porter and caretaker of Citadel-86. Citadel-86 derives
directly from the version 2.10 of Citadel written by Cynbe ru Taren for
CP/M, and contains a number of the apparent oddities that originally
appeared in Cynbe's code. Hue, Jr., feeling there may have been
certain reasons in Cynbe's mind for what he did, has been somewhat loathe
to change how certain things worked. This may indicate a certain lack of
ambition on his part; if so, so be it. Whatever the case, he has chosen
to leave them in, due to his faith in Cynbe knowing what he was doing.
I.2 Introduction
Citadel-86 is part of a growing family of BBSes characterized as
"room-based" systems. These systems are excellent messaging systems in
which the message base is partitioned into various 'areas', enhancing the
focus of the topics on the installation (if well-managed); the areas are
usually termed 'rooms' in order to provide a highly familiar metaphor for
the common user.
Some room-based systems have an additional structure added on to them,
known sometimes as 'hallways' or 'floors', which give addition focus.
Citadel-86 has a 'floor' capability, which is optionally available to the
users. Floors allow the sysop and aides to partition the collection of
rooms into 'subject floors' (or 'topical floors'), so rooms may be
grouped as needed.
Room-based systems normally feature an extremely streamlined set of
commands, in which those used the most often are mnemonic 'single-stroke'
commands whereby the user supplies the first letter of the command to
execute and the system provides the rest of the command. The speed
and ease-of-use of such a command set, in conjunction with the room
concept, has combined to make room based systems extremely popular and
heavily used in several sections of the United States.
Citadel-86 also has file upload and download abilities, integrated
with the room metaphor, and a network capability.
-2-
I.3 Requirements
There are a number of requirements connected with running a Citadel-86
system. The most important one, though, is perhaps the most ignored, and
that is experience with Citadel-86 or similar BBS software from a user
standpoint. It can't be stressed enough that you should have at least a
month of day-to-day experience with Citadel-86 as a normal user, learning
the various commands relating to messages and files, and in general
becoming not only familiar, but comfortable with the Citadel-86 style of
bbsing before descending into sysopdom.
More formally, Citadel-86 is capable of running on two classes of
machine. The first is the Zenith Z-100, an 8085/8088 machine. The
second category contains the IBM PCs, ATs, and close clones (note
a Z-100 does NOT constitute a close clone, although it is supported).
These two classes are similar enough that we do not need to discuss the
requirements for each class separately. However, please note the
two different machines require different executable files (unlike earlier
versions of Citadel-86).
o Operating System: PC- or MS- DOS 2.x or 3.x is required. While not
every single version of DOS between 2.x and 3.x range has been
tested with Citadel-86, we have not had any reports of problems with
those versions of DOS. Version 1.x of MSDOS is a NO NO!
o RAM: We suggest at least 350K RAM be made available to Citadel-86.
This is in addition to RAM for MS-DOS, TSR programs, etc.
o Disk storage: A hard disk is, naturally, highly desirable. However,
you can run Citadel-86 on a two floppy system, but if you must do so,
you should also try to make sure you can have a relatively large
RAM disk available; due to Citadel-86's structure, disk access is
quite frequent. While hard drives (and RAM drives!) do not mind
frequent disk accesses, floppy drives have been known to burn out
under constant usage unless certain options concerning RAM drives
are taken advantage of within Citadel-86.
o An auto-answer modem and the hardware (cables, etc.) requisite to hook
it up to your computer: While a Hayes or compatible is by far the most
popular modem in usage, Citadel-86 can be configured to use several
other types of modems.
o A copy of the Citadel-86 software: Typically, Citadel-86 comes in the
form of three archives. The first is called RUNTIME.LZH, and is
absolutely necessary. It contains the required executables to bring
Citadel-86 up, various help files, and a configuration file. The
second is called SUPPORT.LZH, and contains what little documentation is
available for Citadel-86. It is not strictly necessary, but
useful (or at least comforting). The third is called UTIL.LZH (and
sometimes comes as two archives), and contains the utilities available
for Citadel-86. (If you don't have these, they may possibly be on Test
System in a room called Necessities].)
o Some patience!
-3-
II. INSTALLATION
In this section we explore the installation procedure for Citadel-86,
investigating territory ranging from a general overview of the operating
procedures of Citadel-86 to the details of setting up a system.
We'll begin with a very short section on DOS and modem configuration.
Then we get to the red, raw meat of Citadel-86: a description of how to
prepare and operate Citadel-86, and a discussion of the data files
Citadel-86 needs or generates. Next will be a walk-through of actually
setting up a basic Citadel-86 installation, at the end of which you should
have a working Citadel-86 system.
Easy, right?
II.1 Tickling DOS configurations
First comes the only required DOS configuration you must perform. You
must place the line "FILES=20" in your CONFIG.SYS file on your boot disk.
If such a line already exists (or more than 20 is specified),
then you don't need to worry about anything. If such a line doesn't
exist, then please put it into CONFIG.SYS, save the file, and reboot your
system so it'll take effect. IF YOU DON'T, CITADEL WILL BE VERY PEEVISH!
If you don't understand what we're gabbing about, then please consult
your DOS manuals. CONFIG.SYS is an important part of the DOS system; it
will do you good to learn what it's about.
We AREN'T going to discuss DOS batch files in here. We'll leave that
for a later advanced section, because Citadel-86 exits with different
ERRORLEVELs; the exact levels vary with the reason Citadel-86 exited.
We feel it would be better not to cause excess confusion now, because
you'll be confused soon enough as it is.
We AREN'T going to discuss Citadel-86 command line parameters here,
either. While such things exist, we deem these to be the subject of an
advanced section, and so we leave them for later attention in this manual.
II.2 Making your modem do the right thing
The Citadel-86 basic requirements in the area of modems are:
o Modem can be hooked up to the computer
o Modem can auto-answer the phone
o Modem supports true carrier detect (very preferably on pin 8)
o Modem can be hung up
That sounds pretty darn basic, and it is. However, if you want to take
advantage of some of the default configurations of Citadel-86 for the
modem, here's what we suggest for your modem in terms of characteristics:
o Hayes or (semi) compatible
or
o Carrier detect on pin 8 (normal for most modems)
o Carrier hangs up modem when DTR is dropped
-4-
Like we said, Citadel-86 is not restricted to Hayes/compatible
modems, although they are of course the most popular modem used. But
other modems, such as TransModems, have been used successfully with
Citadel-86. This makes our job, as the manual writers, substantially
more difficult. Due to the overwhelming popularity of the Hayes compatible
modems, we're going to confine most of our advice on modem configuration
to Hayes and compatibles.
The first thing to bear in mind is "compatible" is often a
slippery term. Our advice is based on our own experience with our Hayes
compatible modems; if what we say doesn't seem to jibe with your modem's
documentation, then use a little imagination and search the manuals.
Hayes modems are not normally correctly configured fresh from the
factory, so you must configure yours. Usually, a combination of two
methods are used to achieve the correct configuration. First, DIP
switches on the modem usually control several different functions,
including auto-answer mode. However, on some Hayes compatibles they
don't exist; the functions they usually serve are then either accessed
via software, or not at all. Second, (as you might have guessed), software
can be used to configure the modem, through the use of AT commands.
We strongly suggest you have your modem manual available at this
point.
First, you want to make sure your modem will drop carrier when DTR
is dropped; the opposite of this is sometimes called the "forced DTR"
function, and can be found in the DIP switches. Make sure the modem
does not have "forced DTR" on.
Next, you need to ensure the modem is not "forcing carrier
detect". Instead, it should only have carrier detect true when there is
actually a caller online; otherwise your Citadel-86 will not work
correctly.
Finally, you want to make sure the modem will auto-answer when
Citadel-86 is up. This can be selected either by DIP switch or through
software. If you have a modem with a DIP switch controlling this
function, you may want to use software instead, for finer control of
how your modem acts. You'll find later in this manual you can
specify a string of commands to be sent to the modem when Citadel-86 first
comes up, which you can use to activate auto-answer mode.
The above comments apply equally well to non-Hayes compatible modems,
although the details of how to initialize the modem will differ greatly.
More detail on initialization of the modem will appear later in this
manual in Section II.6.b: Part 6 of Section 1: MODEM HANDLING.
II.3 Citadel-86 Operating Procedures (and other epic fantasies)
Citadel-86 comes with a whole mess of files. However, only three of
these files are important, because they constitute the beginnings and
necessities of Citadel-86. They are:
-5-
o CtdlCnfg.Sys. This file will contain your description of how you want
your system set up. Decisions concerning the location of important
data files, system policies, and other semi-arcane things are described
for Citadel-86's use. The CtdlCnfg.Sys accompanying your system is a
template of a very generic system, and we plan to guide you through it
later in this manual.
o CONFG.EXE. This executable program digests CtdlCnfg.Sys, converting
the information contained therein into a form far easier to
digest by computer programs. It is also responsible for generating new
data files when necessary (typically only when a new system is first
built!) and analyzing old data files. It produces a highly temporary
yet necessary file called CTDLTABL.SYS.
o CTDL.EXE. This is the main executable program of Citadel-86. It
expects to find CTDLTABL.SYS (remember the name?). If it finds it, it
reads it, erases it, and then continues to try to bring up the rest of
the system, using the information it found in CTDLTABL.SYS. If
there are no severe abnormalities during CTDL.EXE's use, it will write
a new version of CTDLTABL.SYS for use the next time you bring up
CTDL.EXE.
II.3.a Who's this masked Temporary file, anyways?
CTDLTABL.SYS has been passed off so far as a temporary file, generated
by CONFG.EXE from digesting CtdlCnfg.Sys, and required by CTDL.EXE.
However, for a mere temporary file it merits more discussion. We said
CTDL.EXE expects to find it; you may have figured out if it's
not there, then CTDL.EXE won't function properly. This is correct, and
the proper corrective action is to run CONFG.EXE. DON'T TRY TO USE AN OLD
VERSION OF CTDLTABL.SYS THAT YOU MAY HAVE SAVED IN CASE OF A CRASH! Yes,
we know running CONFG.EXE to generate a new CTDLTABL.SYS can take a
while if you're running a big system. We mentioned CONFG.EXE
analyzes data files; as it happens, the results of this analysis is
also placed in CTDLTABL.SYS, and used to enhance access to various parts
of Citadel-86, such as the log.
If you use an old version of CTDLTABL.SYS, the older information can
cause Citadel-86 to look for messages that no longer exist, lose track of
new rooms and log accounts, and other behaviors a sysop generally
finds disruptive to domestic tranquility. So, really, "Just say no." Run
CONFG.EXE if you lose your current CTDLTABL.SYS through a crash or power
loss. (This can be automated. See section II.9 for advice on
batch files.)
II.3 (con't)
Back to the subject. We now know the purposes of the three primary
files of Citadel-86. CtdlCnfg.Sys contains information only the
sysop can supply; CONFG.EXE processes CtdlCnfg.Sys, producing CTDLTABL.SYS
and other data files; CTDL.EXE requires CTDLTABL.SYS, and constitutes
the main executable of Citadel-86.
So, in short form, here's how you run Citadel-86:
o Modify CtdlCnfg.Sys to taste.
o Run CONFG.EXE.
o Run CTDL.EXE as many times as desired, as long as each run is
terminated normally.
If you crash, either from a fatal bug or power loss or whatever, just
run CONFG.EXE again.
-6-
II.4 Other Data Files
When you run CONFG.EXE for the first time, a number of data files are
created, and they're what we're going to talk about in this section.
These files contain the information -- accounts, rooms, messages, and
other things -- making up any BBS. The capacities of these files are
selectable by the sysop, and once selected they remain the same size as
CTDL.EXE runs (don't panic, though -- they can be changed through the use
of Citadel-86 utilities!). And with no more delay....
o CTDLMSG.SYS. This file contains all the messages in the system.
o CTDLROOM.SYS. This file contains information about the rooms in your
system. The size of this file is given later in this
manual.
o CTDLLOG.SYS. This file contains all the accounts for users on your
system. The size of this file is given later in this
manual.
o CTDLNET.SYS. This file, if it exists, will be 0 bytes long when
initially generated by CONFG.EXE, and will grow as
the network grows (NETWORK3.MAN talks about C86Net).
o CTDLFLR.SYS. This file contains information about the floors in your
system. It grows as you add floors to your system.
Don't panic, though. Each floor only takes 21 bytes.
These, however, are not the only data files associated with Citadel-86.
CTDL.EXE may, on occasion, generate data files also. These files, unlike
those generated by CONFG.EXE, are not static; however, they are almost
always very small.
o CTDLARCH.SYS. This file contains data about auto-archiving of rooms
(an advanced topic covered in OPER3.MAN.)
o CTDLNET.SYS. This file, created by CONFG.EXE, will be expanded by
CTDL.EXE if you are participating in a network.
o CALLLOG.SYS. This file, an optional text file, is updated as each
caller hangs up. See #AUDITAREA.
o CTDLDIR.SYS. This file contains data about the directory rooms on
your system, specifically the name of the DOS directory
associated with each directory room on your system.
o CTDLMODR.SYS This file contains data about the room moderators on
your system.
o CTDLFWD.SYS This file contains information about mail forwarding
by individual users if you are on the net.
o FILELOG.SYS. This file, another optional text file, is updated as
users upload and download files. See #AUDITAREA.
o DOORUSE.SYS. This file, another optional text file, is updated as
users use your doors. See #AUDITAREA.
o Net Files. CTDL.EXE also generates a variety of small network
files, both temporary and permanent, for internal use.
See NETWORK3.MAN for more information on these files
(Appendix B).
There are also the collection of help files accompanying Citadel-86,
which we talk about in OPER3.MAN.
-7-
II.5 EASE!
Released sometime in the last half of June, 1989, Citadel-86 Sysops
have an alternative to the normal method of both constructing a new
Citadel-86 installation and modifying the system. This is the EASE
utility program, which should be in its own archive, EASE.LZH.
As we indicated above, Citadel-86's description file is CtdlCnfg.Sys
which the Sysop must modify before installing a new system. Although not
a particularly wearisome task in itself, it can still be something of
a pain to a new sysop as well as the more experienced sysop. For this
reason, and, hey, just for the fun of it, the EASE program has been
provided. EASE is just what it's named: it will ease both the
installation and modification processes.
At this point we'd like to urge you to do two things if you have EASE.
First, read, perhaps swiftly, section II.6 below to get a feel for what is
in CtdlCnfg.Sys, but don't try to modify the generic CtdlCnfg.Sys, nor
should you try to initialize a new system, despite the suggestions below.
Second, copy EASE.EXE, EASE.HLP, EASE2.HLP, MODEMS, CONFG.EXE,
CtdlCnfg.Sys and CTDL.EXE into the directory in your system which will be
the home directory for your installation. Once you have done so, simply
type EASE and follow the directions. At the end of EASE, the system will
hopefully be initialized with a complete CtdlCnfg.Sys and most of the
data files you need, and you'll be ready to start playing -- far faster
than the traditional form of installation for Citadel-86.
To summarize, and if you have a hard drive:
o Make a directory on the drive where you want your Citadel-86 installation
to reside.
o CD into that directory
o Copy CONFG.EXE, CTDL.EXE, EASE.EXE, EASE.HLP, and the generic
CtdlCnfg.Sys file into the directory (or deARC, or whatever it takes
to get them into there).
o Type EASE at the command line. Follow the directions. Be ready to
refer to this documentation if you become confused.
And remember. EASE is not only for installation, but for modification
as well. Explore!
II.6 The ole' configuration file
So... we're done with the dull, but necessary, overview. Now we get
down to the fun stuff, the screechy details of deciding those system
policies that can be enforced through the Citadel-86 software, where
certain data files or groups of data files will be kept on your system,
and some other details. We do this by editing the file CtdlCnfg.Sys
mentioned earlier in this manual, so you may want to haul out your editor.
Or you may not. Instead, it might be better to first read through this
section along with a printout of CtdlCnfg.Sys, (we've included a copy of
it in this file as well; see pages 35-42) comparing, taking notes,
understanding what is required and what questions you will have to answer
in order to set up your Citadel-86.
Or -- and we recommend this -- you may wish to use EASE, the Citadel-86
installation and modification program.
-8-
We've decided to divide the CtdlCnfg.Sys file into four sections in
this manual. The first section covers the utter necessities which must be
set correctly for Citadel-86 to come up, options you cannot shut off,
and some miscellaneous doodads not strictly required for a basic
system, but we'd like you to set anyway. This first section makes up
the bulk of the CtdlCnfg.Sys parameters, and is the only one you must
fill out in order to bring up Citadel-86; the rest of the sections
contain options unnecessary for a basic Citadel-86 (although, of course,
they ARE useful!). If you're using a 'virgin' copy of CtdlCnfg.Sys, the
options in the rest of the sections have been set to what we feel are
harmless values.
The second section is made up of options useful, but not necessary,
for the operation of Citadel-86.
The third section is made up of options related to Citadel-86's C86Net
support.
The fourth section covers extremely optional parameters designed to
make modem handling very flexible when necessary. (Don't read this
unless you have a captive, well-fed assembly-language programmer nearby.)
II.6.a But first, a word on moral values ...
There are two methods values are set in CtdlCnfg.Sys. One method
is related to our reference to the fourth section, above, and will
thus be covered in that advanced section. The other method for setting
parameter values, used with the rest of CtdlCnfg.Sys, looks like this:
#<parameter name> <parameter value>
The '#' MUST be in the left-most column of the file in order for
CONFG.EXE to recognize it as a parameter. Indenting this line a space
provides an easy way to disable or save an old value when experimenting
and causes CONFG.EXE to ignore the line.
A parameter value will usually either be a numerical value or a string
value, and we'll tell you for each parameter whether your selection should
be numerical or a string. When it is numerical, always use decimal (with
the exception of the mysterious fourth section).
String values are always enclosed in quotes. Most string values are
used to indicate where to find certain files, but some string values are
special in that certain hard-to-express codes may need to be used in order
to accomplish something; this occurs almost exclusively when communicating
with odd modems (such as TransModems). Therefore, certain parameter
string values in CtdlCnfg.Sys will allow formatting "directives" to be
placed within them, which will be interpreted during the execution of
CTDL.EXE to do special things. The general format of a directive is a
backslash ('\') followed by a either a character indicating a specific
action, or a sequence of three digits representing an OCTAL value you may
need to be in this particular position to accomplish what you wish to
accomplish. Here is the list of characters that perform special actions
when following a backslash:
n: CR-LF
t: Tab character
b: Non-destructive Backspace
-9-
r: CR
f: Formfeed
": Put out a quote (allows quotes to appear in your strings)
\: Backslash
So, if you wanted to insert a CR/LF into a string value, you would type
"...\n..."
If you needed to have the binary value of 6 in a string value, you would
type
"....\006...."
Not all parameter string values accept these formatting directives;
those that don't will simply ignore them. We have marked those parameters
accepting them both in this manual and in CtdlCnfg.Sys. (OCTAL
values, you say! Well.... the gentleman who donated the code to do the
formatting directives, a certain Dalnefre' of SynTel, is a C hacker, and
did it that way. We feel it might be worth changing sometime in
the future, too.)
Please keep in mind that the '\r' has an added implication when placed
in a CtdlCnfg.Sys string being sent to the modem. Citadel-86 will pause
for a full second after sending it in most situations. This allows the
sysop to send multiple commands to those modems using carriage returns as
command delimiters, since the one second pause will give the modem time
to digest the command. For instance, "ATZ\rATS0=1\r" sent to Hayes-style
modems would cause Citadel-86 to send "ATZ\r", pause for a full second
during which the modem would reset to its power-up state (or at least for
most Hayes clones it will), and then send the "ATS0=1\r", which activates
the modem's auto-answer mode. Please note this special processing of '\r'
only applies to modem initialization and reinitialization strings, not to
all strings.
One more note. Certain of the string values in CtdlCnfg.Sys end up
being printed to the users via Citadel-86's formatter. In these cases,
when you use the CR/LF formatting directive ("\n"), remember to have a
space follow it -- otherwise, Citadel-86's formatter probably won't send
a CR/LF to the caller's terminal!
Finally, you'll find a couple of parameters affect your installation
simply by their very existence in your CtdlCnfg.Sys. So that makes three
ways to set values.
II.6.b Section 1 of CtdlCnfg.Sys
We're finally looking at CtdlCnfg.Sys. The file starts (or at least
our virgin copy does) with a short introduction to itself, which basically
tells you to consult this manual if you find it too terse. A short list
of supported formatting directives is also included.
Part 1 of Section 1: MEANINGLESS MISCELLANEA
We're going to start Section 1 with some miscellaneous parameters.
-10-
------
#nodeTitle
The first parameter you should find is called nodeTitle. It is a string
value obeying formatting directives, and is subject to formatting
considerations. nodeTitle is the title of your installation printed when
carrier is detected on your system. More precisely, nodeTitle will show
up in the following place on your system:
Welcome to <#nodeTitle>
Running ...
However, nodeTitle may not necessarily be printed at this point. After
successfully bringing your system up, please consult OPER3.MAN's section
on Help Files for more information on banner options. EXAMPLE:
#nodeTitle "Test System\n Truly a Heaven in Reverse"
The #nodeTitle is printed out on .Read Status commands, also. There is no
formal limit on the length of this parameter.
------
#nodeName
nodeName is, in reality, purely a network parameter, and if you have no
plans to ever join a C86Net, then there is no need to fill in this
parameter. However, it has always been traditional, even before there was
a net for any Citadel system anywhere, to fill in this and the next
parameter (and, so, sentimentally we feel this belongs in this
Miscellaneous section). nodeName is a string value which does NOT accept
formatting directives (i.e., formatting directives will be ignored). It
can be no longer than 19 letters long. It should be a short, mnemonic
name for your system. An EXAMPLE of a reasonable value:
#nodeName "ODD-DATA" -- The original Citadel
If you ever do join a C86Net, messages from your system appearing on
another Citadel-86 node will look something like this
82Nov23 from Cynbe ru Taren @ODD-DATA
except ODD-DATA would be replaced with your value for #nodeName.
------
#nodeId
As mentioned, this parameter is a network parameter that has
traditionally always been set, even for non-network Citadels. If you have
no plans to ever be on a C86Net, then you don't have to set this string
value parameter to anything important. If you do plan to join one,
though, (we'll go over this in more detail in the section on the network),
then you do have to set this parameter correctly. The format of this
parameter is
"<Country code><Area Code><Phone number>"
all of which applies to the phone your system resides on. Country
code is a two letter sequence indicating what country you live in (US is
the United States, CA is Canada. Other country codes may be found in
COUNTRY.DOC). Area code is the area code of your system (yes,
-11-
we are aware there is a clear bias towards US-style telephony). And
Phone number is, of course, the phone number your system is on. You
can put punctuation (such as parenthesis and dashes), but please be
conservative with them. This string value does not obey formatting
directives. Here's a fairly generic example:
#nodeId "US (612) 470 9635" -- Some system somewhere
------
Part 2 of Section 1: REQUIRED ODD STUFF
------
#baseRoom
OK, now we're out of the miscellanea and into parameters you have
to set, starting with baseRoom. Citadel-86 always has a minimum of three
rooms, the Aide> room for housekeeping, the Mail> room for private
correspondence, and the <baseRoom>, which is the room a caller is
always initially placed in. (Historical note: the old CP/M Citadel called
this room the Lobby>; we've only made the name of the Lobby> selectable by
the sysop.) This parameter is a string value obeying formatting
directives and goes through the Citadel-86 formatter, and you must limit
yourself to 19 characters or less for this value. And one more note --
Citadel-86 will append the '>' to this name when it prints the room prompt
for this room, you don't have to put it in yourself. If you wished to
emulate the old CP/M Citadel, you'd set baseRoom thus:
#baseRoom "Lobby"
There is no default for this parameter.
------
#MainFloor
MainFloor is analogous to #baseRoom. Any Citadel-86 V3 has a base
floor, just as it has an Aide> room, etc. This parameter allows you to
name this base floor. This parameter is a string value which cannot be
longer than 19 characters, and specifies the name of your base floor. So,
if you want to name your base floor MAIN FLOOR, you'd have
#MainFloor "MAIN FLOOR"
There is no default value for this parameter.
------
#CRYPTSEED
Citadel-86 automatically encrypts all sensitive data files. While the
algorithm used can, of course, be broken by the determined, particularly
since the code is available for perusal, the encryption does provide
protection against casual eyes, mistakes, and amateur system breakers. We
do encourage you to take precautions of your own, such as not opening
directory rooms into sensitive data areas.
CRYPTSEED is an encryption seed Citadel-86 uses to encrypt your
data; if someone should acquire of all of your data files but for
CtdlCnfg.Sys, then they still won't have access to your system until they
figure out what your CRYPTSEED is. DON'T EVER CHANGE THIS VALUE WHILE
RUNNING A CITADEL-86, OR EVERYTHING WILL BECOME MESSED UP!
-12-
We do not know of any value you can select which will "deactivate"
the encryption process (to be frank, we don't understand the encryption
algorithm ourselves). Pick a value at random; the value should be a
value less than 65536. Here's an example:
#CRYPTSEED 69 -- a little hubris for the shy
------
#UNLOGGED-WIDTH
This parameter is used for users who have not logged in yet to specify
the width of their screens. If not present, it will default to 40.
Remember this applies to your login banners.
#UNLOGGED-WIDTH 79 - makes it all look normal
Part 3 of Section 1: DATA FILE SIZES
------
#MESSAGEK
MESSAGEK defines how much disk space you wish to allocate for messages
on your installation. There is no way to define how many messages you
want in your system, or how fast they turnover. All the messages in your
system will reside in CTDLMSG.SYS, and thus the number of messages in your
system at any given moment will depend on the length of the messages being
entered into the system by your users. The turnover rate of your messages
will depend on how busy your system is. As an example, Test System has a
611K message base, which holds 2100 messages +/- 300, of which some are of
fairly good length. Turnover seems to between 3 weeks and a month, since
80-160 messages are entered a day. However, Test System is also a busy
system.
The sysop of an installation should also keep in mind that very large
systems, with many new messages, can be intimidating to new users, so
large message spaces should be approached with caution. Remember, there
is a utility for expanding the message base, but not for shrinking it.
This is a numerical value which you specify in 'K', which is actually
1024 bytes/K. So, for example, to specify a 250K message file
#MESSAGEK 250 -- 250K message base
------
#MSG-SLOTS
This numerical parameter specifies how many messages per room will
be used on this system (the lone exception is the Mail>, which is covered
by the following parameter). If you wanted to use Citadel-86's
traditional number of messages per room, you'd have
#MSG-SLOTS 58
------
#MAIL-SLOTS
This is a numerical parameter specifying how many messages per log
record you wish to reserve for Mail. The Mail> room is the only
room in the system whose data is not kept in CTDLROOM.SYS. Instead, the
file CTDLLOG.SYS contains the "Mail>" room, reserving for each account
-13-
enough room for MAIL-SLOTS Mail messages. Therefore, this parameter gives
you the ability to decide the maximum number of Mail> messages per user
they can access. Please remember if a user gets more messages
in Mail> than there are MAIL-SLOTS between two successive logins, then
they will lose the earlier messages sent to them. Another consideration
is many users like to review old Mail when engaged in an in-depth
private conversation. Therefore, setting MAIL-SLOTS to a low value may
not be the attractive alternative it first seems. However, it should
go without saying a high MAIL-SLOTS value may eat up more room than
necessary on your drives. The section on LOGSIZE will give an exact
formula for how much space your log will take up. If you wanted to use
what Citadel-86 used before V3, you'd have
#MAIL-SLOTS 58
------
#MAXROOMS
This numerical parameter specifies the maximum number of rooms your
system will support. Since the baseRoom, Aide>, and Mail> room are
necessary, the smallest value you can give is 3. The largest number is
65536 (probably). If you wanted to have a 64 room system, you'd have
#MAXROOMS 64
You can use the following formula to estimate the number of bytes a
room file will take up on your system:
# of bytes = MAXROOMS *(50 + (6 * MSG-SLOTS))
------
#LOGSIZE
This numerical parameter gives you the ability to decide
how many accounts will be available on your system. If you run a system
in which more accounts are used than there are accounts reserved, then new
accounts are generated by killing old accounts. Accounts are recycled
by finding the account who's last use is the oldest of all the accounts
in the system, under the assumption such an account is no longer active.
All space is reserved immediately for these accounts. The size of
this file can be estimated from the formula
# of bytes = LOGSIZE * (82 + MAXROOMS + (6 * MAIL-SLOTS))
so if you are operating in a restricted environment, plan accordingly.
If you need to, you can expand the size of the log through the use of
the DATACHNG utility, but the log cannot be shrunk. This is a numerical
value. Here is an example:
#LOGSIZE 180 -- Usually adequate.
Part 4 of Section 1: DATA FILE LOCATIONS
Now we discuss where you want the data files to be located on your
system. These parameters are all specified in the same way, as a string
value (which does not obey formatting directives, naturally) telling
Citadel where on your system the given data file or files associated with
the given parameter is located.
-14-
Simply use the MSDOS relative directory specification. You can
ONLY specify a subdirectories of the current directory on the disk you
specify (if you don't specify a disk, then the current disk will be
assumed). So, some sample valid specifications would be "c:", "a:system",
"b:msgs", and "i:bark". Some sample INVALID specifications include
"c:\citadel\msgs" (an absolute specification, rather than relative),
"a:\audit" (ditto), and "i:.." (".." is technically not a subdirectory,
but a parent directory).
If CONFG.EXE cannot find the directory you specify, it will
attempt to create the directory, after asking permission.
------
HELPAREA
This parameter specifies where all of your Help files will be located.
These files are *.HLP, *.BLB, and *.MNU. Normally, you should create this
directory and place the help files in the directory before bringing up
Citadel-86, since help files are usually online at all times.
#HELPAREA "c:helps" -- helps subdirectory on drive C:
------
LOGAREA
This parameter specifies the location of your CTDLLOG.SYS file (this
file is sized by your LOGSIZE parameter).
#LOGAREA "c:system" -- put it in a general system dir
------
ROOMAREA
This parameter specifies the location of CTDLROOM.SYS, CTDLARCH.SYS,
and CTDLDIR.SYS.
#ROOMAREA "system" -- another general system dir
------
MSGAREA
This parameter specifies the location of CTDLMSG.SYS.
#MSGAREA "c:msg" -- give msgs there own place in the sun
------
FLOORAREA
This parameter specifies the location of CTDLFLR.SYS.
#FLOORAREA "floors"
Part 5 of Section 1: POLICY OPTIONS
Now we enter the POLICY part of the CtdlCnfg.Sys file. The parameters
discussed here represent the parts of your policy enforceable via
the Citadel-86 software.
-15-
------
#AIDESEEALL
This parameter is a toggle giving you some power over the scope of
your aides' "vision". If you set this parameter to 1, then your aides
have access to all public AND private rooms (but not invite rooms, unless
the have been invited). If this parameter is set to 0, then aides only
have access to public rooms, plus those private and invite rooms
they've been invited to. So, if you want your aides to see all public and
private rooms, you would have
#AIDESEEALL 1 -- See all but invite rooms
if you don't want your aides to be so nosy, then you'd have
#AIDESEEALL 0 -- See only public rooms.
------
#LOGINOK
The LOGINOK parameter controls whether your system is an "open" or
"closed" system. If you set LOGINOK to 1, the system will allow anyone to
log in as a "new" user; i.e., it will ask a caller who uses an
unrecognized password if they wish to login as a new user. If LOGINOK is
set to 0, the system will simply tell the caller without a valid password
there is no record of their password, and they should leave Mail> to the
sysop (but see OPER3.MAN's section on the various Help Files for another
option); the only way to enter new users into the system is from the
system console. If you want an open system, for example, you would have:
#LOGINOK 1 -- let the riff-raff in!
------
#ENTEROK
ENTEROK controls whether a caller who is not logged in can enter
messages or not. If ENTEROK is 1, then a caller who has not logged in
can enter messages; if it is 0, then they must log in first, except for
Mail to the sysop. Setting ENTEROK to 0 can reduce vandalism; setting
it to 1 gives your callers the privilege of anonymity.
#ENTEROK 0 -- log in first, folks!
------
#READOK
READOK controls whether an unlogged caller can read messages. If
READOK is 1, then they may. If READOK is 0, then an unlogged caller can
only read the policy statement available in the Mail> room (POLICY.HLP),
and the help files. Setting READOK to 0 can discourage unwelcome callers
from using scarce system time.
#READOK 0 -- gotta login to read these gems...
-16-
------
#ROOMOK
ROOMOK controls who can create new rooms on your system. If ROOMOK is
1, then any logged in user of the system may create new rooms. If ROOMOK
is 0, then only aides may create new rooms on your system.
#ROOMOK 1 -- a liberal policy
------
#ALLMAIL
ALLMAIL controls who can use the Mail> room. If ALLMAIL is 1, then
any user may use Mail> to send private messages to any other user on the
system. If ALLMAIL is 0, then only Aides may use the Mail> room in a
general manner; regular folk can only use Mail> for messages to Sysop.
Setting ALLMAIL to 0 may be appropriate on tightly focused systems
operating in a small environment.
#ALLMAIL 1 -- the normal policy
------
#DoorPrivs
DoorPrivs lets you decide if new users should automatically be given
door privileges or if they should ask you for them.
#DoorPrivs 1 -- they get them automatically
#DoorPrivs 0 -- they have to ask.
------
#ANON-MAIL-LENGTH
When this numeric parameter is present, all anonymous Mail> to sysop is
limited to the specified number of characters. When a message is sent
exceeding this limit, the user loses carrier and the message is appended
to a file named ANONMAIL, just in case the Mail was valid. This option
is useful when a vandal is attempting to scroll the message base and is
being very persistent, to the point where even closing open logins just
causes him to leave anonymous Mail to sysop, since that's the last
vulnerable point in the system once login access is lost. This would let
you let limit anonymous Mail> to 300 characters.
#ANON-MAIL-LENGTH 300
If this parameter is not present or the value is 0 then there is no
limit on anonymous Mail.
------
#LOGIN-ATTEMPTS
This parameter lets you control how many unsuccessful attempts an
unlogged user can indulge in before the system will drop carrier on them.
For instance, the following lets a user try four times before carrier is
dropped.
#LOGIN-ATTEMPTS 4
-17-
------
#FILE-PRIV-DEFAULT
File privileges may be set for new users en masse. #FILE-PRIV-DEFAULT,
a numeric parameter, lets you set whether the average new user can have
file privileges. Use 1 to indicate they may, 0 to indicate they may not.
#FILE-PRIV-DEFAULT 1
means you're a generous soul. If this parameter is not present, it will
default to 1 (on). You may also assign file privileges individually
using LOGEDIT or the <U>ser Administration menu hanging off of the Sysop
Menu.
File privileges do not apply to uploads.
------
Part 6 of Section 1: MODEM HANDLING
We now enter into defining the essential details of your communications
hardware.
------
#IBM
You use this parameter to tell your Citadel-86 if your system is
running on an IBM PC/XT/AT or compatible, or if it is running on a Zenith
Z-100 (set it at 0). If you have an IBM, you'd have
#IBM 1 -- Big Boo
------
#COM
This parameter is meaningful only for IBMs, and selects which COM port
the modem is attached to (on Z-100s only J2 ports are supported). For
IBMs, only COM ports 1, 2, 3, and 4 are supported.
#COM 1 -- If you are using COM1.
------
#SYSBAUD
The SYSBAUD parameter is used to tell Citadel-86 what baud rates your
hardware will support. Citadel-86 cannot normally be configured to run
high baud rates while excluding lower baud rates (i.e., operate
correctly at 1200 baud but not at 300 baud). Here's the mapping:
0 => 300
1 => 300/1200
2 => 300/1200/2400
3 => 3/12/24/48
4 => 3/12/24/48/96
5 => 3/12/24/48/96/14.4
6 => 3/12/24/48/96/14.4/19.2
#SYSBAUD 1 -- A 3/12 system.
-18-
------
#modemSetup
This parameter is used to initialize your modem. It is a string value
parameter obeying the formatting directives; however, you should be
warned Citadel-86 automatically appends a "\r" to the end of this
string before sending it to the modem.
And when is modemSetup sent to the modem? It is automatically sent
while Citadel-86 is initializing, and it will also be automatically
sent to the modem whenever the <R>einitialize command is selected from the
Sysop Menu (i.e. privileged function:).
The value you use for this string should cause the modem to be
put into a mode where it will function suitably with Citadel-86. This
includes auto-answer and response to DTR, at the very least. Other
options you may wish to consider include turning the modem speaker
off (if you have one); consult your modem manual for details. The example
we have here is biased towards Hayes/compatible modems. You may have to
do some research if you're using an odd modem. Our example turns
auto-answer on and turns off the speaker on a Hayes modem; note the lack
of "\r".
#modemSetup "AT S0=1 M0" -- Surely an exercise in aesthetics...
------
#REINIT
As faster and faster modems appear on the scene, some of these modems
are displaying odd characteristics which did not appear in the early
300/1200 modems. Chief amongst these is that some modems, after
accepting a call at a baud rate lower than the modem's highest, will not
accept calls at higher baud rates without being reinitialized at the
highest baud rate. If your modem is one of these types, then you will
wish to use this parameter.
Also, we have observed that some modems, although capable of accepting
calls at high baud rates directly after low baud calls have been
accepted, are not as reliable in the area of Result Codes as we might
like. Since Citadel-86 can use Result Codes (see Section II.9.d), we
would like to see this improved, and, fortunately enough, we have
observed using #REINIT with such modems actually increases their
reliability. So, even if you have a good modem, you may wish to use this
parameter.
When this parameter is present, it causes Citadel-86 to reinitialize
the modem at its highest rate with the string you specify in this
parameter. This parameter accepts format directives. For most Hayes
compatible modems, the string "AT" is usually more than acceptable.
-#REINIT "AT" -- disabled, but recommended value
-19-
------
#DISABLE-MODEM
#ENABLE-MODEM
Usually, when Citadel-86 needs to "disable" your modem (that is,
cause it not to answer the modem), it "drops" the DTR pin (electrical
stuff, don't worry about it), which usually causes the modem to stop
answering the phone. The modem is disabled whenever you, the sysop,
uses the system at the system console.
Some sysops, however, would prefer the modem go "off-hook"; that is,
the modem should hold your phone line open and thus cause a busy signal
for all callers while you're on. These optional string parameters,
when present, are sent to the modem when disabling and enabling the
modem, thus making it easy to force a busy signal when you're on if
you know what command to send to your modem. For example, "ATH1" will
put most Hayes-type modems "off-hook", and "ATH0" will put them back
on-hook. In the following, we've disabled the parameters since we don't
particularly recommend the use of these parameters ourselves, but the
values are what we'd probably recommend if we used them. Note the use
of "\r" at the end of each! Citadel-86 will not! automatically append
the carriage return needed to force the modem to process the command, so
you must do that yourself!
-#DISABLE-MODEM "ATH1\r"
-#ENABLE-MODEM "ATH0\r"
------
#LOCK-PORT
This advanced parameter is used for "locking" your com port at the
baud rate you specify. This parameter is primarily useful when you
are using a USR high speed modem (HST, Dual-Standard, etc.) and you want
to have the callers, when they are calling in with compatible modems, to
enjoy the highest possible throughput, which is achieved by having the
modem talk to the computer at a specific (and high) baud rate, regardless
of what the caller is connected at.
As we said, this is an advanced option. If you plan to use it, you
must make sure your modem knows about it and is fed the correct modem
commands so it knows what baud rate it should talk at. You should use
the #REINIT parameter to tell it this information.
The parameter you specify to #LOCK-PORT should be a number indicating
what speed you want the computer to talk to the modem. Use the same
scheme as for #SYSBAUD, i.e., 300 = 0, ... 4 = 9600, 5 = 14400, and
6 = 19200. For example, if you have a good enough serial port to handle
19,200 baud with your USR modem, you would want
#LOCK-PORT 6
in your CtdlCnfg.sys.
-20-
------
Part 7 of Section 1: VIDEO OPTIONS
------
OLDVIDEO
This parameter is difficult to categorize, so we'll just lay the cards
out on the table. Basically, every once in a long while we run across
some computer that hangs when Citadel-86 is run, and it has something to
do with the video portion of Citadel-86. (We haven't actually seen this
happen in quite a while, but ...) Therefore, if you place #OLDVIDEO in
CtdlCnfg.Sys, Citadel-86 will use its old video routines for display,
rather than the new.
-#OLDVIDEO -- disabled
------
FOREGROUND
BACKGROUND
STATUS-FOREGROUND
STATUS-BACKGROUND
These four parameters allow you to specify what colors will show up at
the system console.
FOREGROUND specifies the color of the characters themselves, except on
the status bar.
BACKGROUND specifies the background of the screen, except on the status
bar.
STATUS-FOREGROUND specifies the color of the characters of the status
bar.
STATUS-BACKGROUND specifies the background color of the status bar.
You have the following colors to select from. This first list of
colors may only be used as FOREGROUND selections:
DARK GRAY, LIGHT BLUE, LIGHT GREEN, LIGHT CYAN, LIGHT RED, LIGHT
MAGENTA, YELLOW, WHITE.
This second list of colors may be used as either FOREGROUND or as
BACKGROUND selections:
BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHT GRAY.
Please note on some color monitors not all colors are
available, and on monochrome monitors you should probably select
highly contrasting colors for Foreground/Background pairs. Here is an
example:
#FOREGROUND RED
#BACKGROUND BLUE
#STATUS-FOREGROUND LIGHT GREEN
#STATUS-BACKGROUND BLACK
Also note Citadel-86 is accompanied by a utility program named
SCREEN.EXE which will help you select colors easily. Please see the
Utilities manual when you are ready to play with your screen colors.
The EASE utility is also capable of helping you select screen colors;
in fact, SCREEN is classed as an optional utility, and you may not have
it.
-21-
------
CLOCK
The status bar of Citadel-86 contains a clock, updated every minute,
in the far right-hand corner. Some folk may not want this clock,
however, while others only want to see the clock only when a user is on
the system. Therefore, the parameter #CLOCK is available to control the
behavior of the status bar clock. The value you place after #CLOCK
controls the behavior of the status line clock. Here are the supported
values:
o "None" - If this is present, then you never have a status bar clock.
o "Inuse" - If this is present, the clock is only displayed when the
system is active.
o "Always" - This causes the clock to be active all the time.
So, for instance, if you want the clock to never be on display,
#CLOCK None - No clock
would do the trick for you. If this parameter is not in your
CtdlCnfg.Sys, "Always" is considered the preferred value.
------
If you are a novice setting up Citadel-86 for the first time, please
SKIP to Section II.7. This is the end of Section 1 of CtdlCnfg.Sys,
parameters which must be set for Citadel-86 to run correctly. The other
three sections of a virgin copy of CtdlCnfg.Sys (which we assume you are
working with) have been given default values that shouldn't cause any
problems with running a Citadel-86.
If, on the other hand, you're just exploring what's available, continue
on your merry way!
II.6.c Section 2 of CtdlCnfg.Sys
Now we enter into the realm of options which may prove useful to you in
your particular environment, but which are not necessary for the correct
operation of a Citadel-86. We're going to begin by discussing a general
time-driven event-handler facility. Then we'll talk about some other
miscellaneous parameters.
------
#event ...
This is what we're calling a "time-driven event-handler", which we're
going to define as the ability to cause Citadel-86 to do certain things
at times you specify. So, for instance, you can have the system
come down at certain times of the day to back itself up, or have it go
into networking mode several times a week -- or several times a day. Or
do whatever your imagination suggests. Any number of these #event
parameters may appear in your CtdlCnfg.Sys file.
This is the generic format of these parameters.
#event <days> <time> <class> <type> <duration> <warning string> <depends>
-22-
Here is an explanation of each parameter field in the above.
<days> can be any of the values "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
"Sun", or "All", or any combination of the first seven. If used in
combination, separate each with a ',', but NO spaces are allowed. This
part of #event is used to specify on what days this event is to take
place. So, if you want something to happen only on Wednesdays and
Saturdays, then you'd have
#event Wed,Sat ....
The 'All' value means, of course, all days of the week.
<time> is the military specification of what time of day this event is
supposed to happen (unless the class of this event is 'relative' -- see
below). For instance, 11 AM would be
#event .... 11:00 ....
while 11 PM would be
#event .... 23:00 ....
and 12:30 AM would be
#event .... 00:30 ....
Only one time can be specified in this field. If you need the same event
to happen at multiple times, then use separate #event entries.
<class> indicates the class of the event, which is roughly what kind of
event it will be. C-86 supports twelve classes of events at this time,
as described below.
'network' -- this indicates Citadel-86 should drop into networking
mode on the day(s) at the time indicated by the <days> and <time> fields.
See NETWORK3.MAN for more information.
'until-done-net' - This class of event is very much akin to the 'network'
class of event, and before using this event it is recommended the
'network' class be reviewed. This class differs in that if all systems
on the member nets specified for this event are reached (or do not need
to be called) then the system will immediately exit the network session.
Spine systems will be called regardless of the need to connect. The
<depends> format for this class is the same as for 'network'. See
NETWORK3.MAN for more information.
'external' -- this indicates Citadel-86 should come down on the
day(s) at the time specified by the <days> and <time> fields. The
ERRORLEVEL Citadel-86 should generate when it comes down will be
discussed later in the subsection on the <depends> field. This class
should be used in conjunction with a carefully written batch file.
'relative' -- this indicates Citadel-86 should come down X minutes
after it has come up (this is used to replace the TIMEOUT and HOUROUT
parameters of pre-V3 Citadel-86).
-23-
The number of minutes (X) should be expressed in the <time> field; the
<days> field has no meaning (although it should be filled in) when class
is 'relative'. The ERRORLEVEL to be generated by Citadel-86 when it comes
down will be discussed later, but for now we'll state it occupies the
<depends> field. For instance, if you want your system to come down 6
hours after it comes up, do something, and then come back up (at which
point you should realize it'll come back down again 6 hours after that,
unless another event comes first), you would have an event like:
#event Sat 6:00 relative .... 7
in your CtdlCnfg.Sys (note Sat is meaningless, but some valid field
has to be there), and your batch file would have something like this:
:loop
ctdl
...
if ERRORLEVEL 7 goto doseven
...
:doseven
REM this is a generic program call, fill in with what you'd really do
generic
REM other things..
....
REM now bring Citadel-86 back up
goto loop
....
'dl-time' -- This indicates a "download time limit" should be
activated. When this class of event is active, the total amount of time
a user may use in downloads during the period of time this #event is active
is limited by the value in the <depends> field, specified in MINUTES.
This class value should only be used with the 'quiet' type (see below).
When this event ends, download time limits return to an unlimited status
automatically.
'anytime-net' -- This class is used to activate the Anytime-Netting
Callout feature. This feature is detailed in NETWORK3.MAN; basically,
events of this class specify the period of time in which calling out
to other systems specified in the <depends> field of the event for
anytime network purposes is acceptable. The start time specifies when
the system may becomes eligible for calling out, and the <duration> field
indicates how long this eligibility is to last. You may also specify how
long the system is to be idle before anytime netting is to be attempted,
and how long such net sessions should last, using the #event parameter.
NETWORK3.MAN contains the closest thing to a full discussion of this
feature, and we strongly recommend you read Network3.Man before using
this class of #event. This class should only be used with the <type>
value 'quiet' (see below).
'door-limit' -- This class is used to place time limits on how long the
current user may spend using doors on your installation. The <days>,
<time>, and <duration> (see below) fields are the same as for most other
classes, meaning you can designate which ever days and times you want
doors to be limited, and for how long. The <class> field should, of
course, contain 'door-limit" as its value. The only valid <type> value
-24-
(see below) for this class of event is 'quiet'. This #event is ignored
when the user is a sysop, either remote or at the sysConsole. This
#event is overridden by automatic doors (see below).
'autodoor' -- This class is used to set up 'automatic doors' to be
triggered when specified users log in. The days, time, and duration
fields are the same as usual, thus allowing you to deactivate and
activate it at scheduled times. See the <depends> definition below for
the format of <depends> in connection with this class. The only valid
type value is 'quiet'.
'chat-on' -- This class is used to enable Chat Mode (that is, allow
users to signal the sysop for a chat) at a specified time. Days and
time are the same as usual. However, the duration field does NOT
imply that at the end of the event Chat will be automatically turned
off. However, by setting the duration field appropriately you may
ensure Chat is turned on in case your system is brought up after the
event but during a time you'd prefer chat to be on. For example, if
you wanted Chat to be on starting at 7PM, and were sure you wanted it
on until 10PM, you might have a #event that looked like this:
#event all 19:00 chat-on ... 180 ...
This would not only turn Chat on at 7PM, but, if your system was down
due to a power shortage (for example) until after 7PM and then brought
up, the duration of 180 minutes would still turn Chat on. If you had
used 0, then Chat would not have been turned on if your system was down
at 7PM. This class should only be used with the <type> value 'quiet'
(see below).
'chat-off' -- This class is the same as 'chat-on' except, of course,
chat is turned off at the specified time.
'redirect' -- This class lets you redirect an incoming file from the net
to a specific directory, which can be useful for automatic network
domain map updates and the like. The only valid <type> field value for
this class is 'quiet.' The <depends> field will contain, in order, the
name of the incoming file to trigger on, the directory to place the
file in, and the system from which this will be accepted (other systems
sending same-named files will only result in the file being put in the
normal file reception area, as will files from rogues if you are using
network passwords).
'newusers-allowed' -- This class is strongly analogous to the chat-on
class. At the specified time on the specified days, new users will be
allowed to create their own accounts, regardless of the value of the
#LOGINOK parameter in your CtdlCnfg.sys file. As with the chat-on class,
the duration field of the event should be set to cover the entire time
new users will have this privilege, in case your system is brought up
sometime during that time period. Additionally, at the end of this event
the parameter will NOT be set back to its old value; instead, it is left
on. If you want to disable the privilege when events of this class expire,
see the next class. Events of this class should always be of type 'quiet.'
This class has no <depends> field.
-25-
'newusers-disallowed' -- This class complements 'newusers-allowed' and
should be used to disallow new users from creating their own accounts.
Example: to let new users create accounts at 7pm to 12pm and turn that
ability off at all other times, use the following two lines:
#event All 19:00 newusers-allowed quiet 300 ""
#event All 00:00 newusers-disallowed quiet 300 ""
<type> defines what type of event this will be, which essentially means
how Citadel-86 reacts when the event time comes around. There are three
types of events supported at this time: preempt, non-preempt, and quiet.
'preempt' -- this indicates when it's time for this event to occur
the current user (if one is on) will be kicked off the system. A warning
will be issued to the user 5 minutes before the event is to occur (or if
they call in after the 5 minute mark has passed, they will get the warning
immediately). This type should be used for events which MUST occur at a
given time, such as networking.
'non-preempt' -- this indicates the system is willing to wait until
the current user is off the system before executing the current event. If
the time of the event is passed by, the event will still be executed when
the caller logs off.
'quiet' -- this indicates the event should occur with no notice given
to the user. Currently, this only makes sense with the 'dl-time',
'door-limit', 'autodoor', 'anytime-net', 'chat-on', and 'chat-off'
class values.
<duration> defines how long the event will last, in minutes. If duration
is 0, then if you happen to bring the system up at the exact time the
event is to take place, the event WON'T take place; for all other values
of duration, the event will take place. Duration should probably be 0 for
external events you only want to happen once, happen quickly, and
bring the system right back up, such as a backup event in which your BAT
file backs up the system and then brings it back up. This can go so fast
your system will be back up in less than 1 minute, so you don't* want
duration set to 1 -- you want it at 0, otherwise the event could be
executed more than once. However, for network events you certainly want
it set correctly. A 45 minute network event would look like this:
#event ... ... network preempt 45 ....
<warning string> is only valid for 'preempt' and 'dl-time' events. It
is sent to the user for the warning and for the "you've been kicked off"
messages. It should be enclosed in quotes. Here's what the messages
look like for preemptive events:
"<beep>WARNING: System going down at <time> for <warning string>."
"<beep>Going to <warning string>, bye!"
So, for networking,
#event .... "networking" ...
works just fine. The message, when used for download time limit events,
looks like this:
-26-
"I'm sorry, that would exceed the current cumulative
download time limit of <warning string>."
<depends> is a parameter whose meaning depends on the class of the event.
If the class of the event is 'external' or 'relative', then this value is
the ERRORLEVEL Citadel-86 is supposed to generate as it comes down,
and should be used in BAT files for further processing. The upper
effective limit on this parameter is whatever MSDOS allows in BAT files,
we think. Before leaping into this, however, please review the section
on BAT files in this Installation Manual, paying particular attention to
already-reserved ERRORLEVELS.
If the class of this event is 'network', then <depends> specifies which
net(s) this network event is going to participate in. While we are not
going to discuss in detail what Citadel-86's "multinet" capability is
right now, here is a summary: Citadel-86 supports handling multiple
C86Nets. Each network is identified by a number; all of the nodes in
your system can be associated with 0 or more of these nets. Thus, using
the <depends> field can allow you to network with certain systems at one
time and/or day, and other systems on other times and/or days. The
<depends> field must have at least one of the nets identified here, and
may have more if a particular network session is servicing more than one
network at a time. If more than one net is to be serviced, place a comma,
and ONLY a comma, between each net identifier. So, if you wanted to
specify nets 1, 6, and 14, you'd have
#event .... 1,6,14
If the class of the event is 'dl-time', then the depends field specifies
the maximum number of minutes which may be spent in downloading while
this event is in effect.
If the class of this event is 'anytime-net', then depends consists of
three values: <dead time> <session length> <member net list>. Dead time
is how long the system is to be idle before attempting netting, session
length is how long such net sessions should last, and member net list is
just like the normal network session member list.
If the class of the event is 'autodoor', then the format of the
depends field is
"username" doorentrycode
The reason for the quotes around the username is some users have
multi-word names. doorentrycode is the entry code for the #door to be
triggered when user "username" logs in.
If the class of the event is 'door-limit', then the depends field
specifies the time limit on doors in minutes.
If the class of the event is 'chat-on' or 'chat-off' then there are
no values for the depends field.
if the class is 'redirect' then the <depends> field will contain
<filename> <directory name> <system name>, for the name of the file
which will be redirected, the directory to put it in, and the system from
which the file will be accepted and redirected (same-named files from
other systems will be placed in the normal area, #FILE_RECEPT_AREA).
-27-
And that's it for the #event parameter(s). We hope our explanation
is understandable; we sure had a hard enough time writing it! Oh, and
there are examples of real-world #event entries in Section XIX (we think)
of the Operations Manual.
------
#sysPassword
This parameter gives you access to the Remote Sysop capabilities of
Citadel-86.
A "Remote Sysop" is an Aide, not at the System Console, who knows
the Remote Sysop Password. A Remote Sysop's capabilities include complete
access to the Sysop Menu (yes, including such silly things as changing
the Baud Rate -- See OPER3.MAN) and when editing rooms the Remote Sysop
can do what a normal Sysop can do. A Remote Sysop gains access to the
Sysop capabilities in exactly the same way as a normal Sysop does, by
sending a ^L to the system -- but a Remote Sysop has to supply a password.
This parameter, a string value which does not obey formatting
directives, does NOT (repeat NOT!) specify the Remote Sysop Password.
Rather, it specifies the NAME of a file containing, on one line, the
Remote Sysop Password (this allows you to hide your Remote Sysop Password
somewhere on your system). This filename may specify any file anywhere
on your system, including different drives and subdirectories.
The password itself must be at least 15 letters long, and is, unlike
most passwords, case-sensitive. WARNING: If you change the password
in the file, you must run CONFG again (CONFG ONLYPARAMS -- see the Section
on Command Line parameters).
If this parameter is not specified, or the file is not found, then the
Remote Sysop facility is not active.
We really don't recommend you use this facility, due to the abuse
possible if some juvenile delinquent breaks two passwords. However, if
you insist on using this facility, and placed your password in a file in
a directory on drive G, in a file named PWD in a directory on the root
called HIDING, you'd have the following in your CtdlCnfg.Sys file.
#sysPassword "g:\hiding\pwd" -- Note the lack of '\\' sequences
------
#door ...
This parameter is used to make a door available to the user. This
subject is treated fully in Section XI of the Citadel-86 Operator's
Manual (OPER3.MAN).
------
#ISDOOR
This parameter allows you to run Citadel-86 as a door itself. When
you configure a Citadel-86 using this parameter, it will no longer
attempt to initialize the modem when coming up, because it will expect a
user to be there already. For further details, see the Operations Manual
Section XII.
------
#AUDITAREA
This parameter is just like the MSGAREA, et al. It is a string value
parameter specifying a drive and directory which will hold three audit
files. If this parameter is not present in your CtdlCnfg.Sys file, then
-28-
the audit files will not be created or updated by Citadel-86.
The audit files are known as CALLLOG.SYS, DOORUSE.SYS, and FILELOG.SYS.
They are simple ASCII text files containing notes regarding system usage.
CALLLOG.SYS contains three types of notes. The first type lists when
the system has come up and down.
The second type records who has called, listing login and logout times,
one line per person, in the following format:
<person> : <login time> - <logout time> <baud rate>
Occasionally such a line will have an extra character appended onto it,
and they have the following significance.
'+' The user logged in as new.
'-' The user used .TS to logout.
'T' The user timed out on the system.
'E' The user hit the error limit on the system and was
kicked off.
'B' The system kicked the user off for too many offenses against
BADWORDS.SYS.
'C' The user tried to chat with you.
The third type of message in CALLLOG.SYS are notes regarding network
sessions, both normal and anytime-net. These record on a single line
the start and end times of the net sessions. This particular message can
be disabled by using the #CLEAN-CALLLOG parameter.
FILELOG.SYS format is somewhat different. Generically, it looks like
this:
<user name> @ <baud rate>
file1 (n bytes) <roomname> <U or D> <start to end> <length> <protocol>
[FAILED]
file2 (n bytes) <roomname> <U or D> <start to end> <length> <protocol>
[FAILED]
...
This format keeps the number of user names down. "n bytes" is the size
of the file. "roomname" is the room involved. "U or D" refers to whether
the named file was Uploaded or Downloaded. "start to end" refers to start
time and end time of the file session, while length is the amount of time
involved. Protocol will be one of the three XMODEM, YMODEM, or WXMODEM.
"FAILED" will only appear on the line if the transfer failed.
DOORUSE.SYS simply lists who used what doors for what amount of time
at what time of the day.
If you want to have a call log, you would have something like this in
your CtdlCnfg.Sys file:
#AUDITAREA "c:audit" -- This can only be a subdirectory
-29-
------
#MIRRORMSG
The structure of Citadel-86's message base causes frequent disk access.
While this is not particularly deleterious for a hard disk, this kind of
activity has been known to actually destroy floppy drives. Therefore, it
makes sense to put the message base into a RAM drive. However, this leaves
systems vulnerable to message base loss due to power failure. Because of
this, Citadel-86 has the ability to support two identical message bases at
once.
The first message base functions as the primary; messages are written
to and read from this base. This message base is specified by the MSGAREA
parameter. The second message base, however, is subject only to writing,
thus saving wear and tear on the media involved. Since the primary
message base (the one both written to and read from) is subject
to a lot of wear and tear, this message base should be placed in a RAM
disk. The MSGAREA parameter mentioned earlier specifies the area for the
primary message base. It is your responsibility to make sure a copy
of CTDLMSG.SYS is in the RAM disk when you bring Citadel-86 up; Citadel-86
will not do that for you.
The secondary message base, since it is only written to, should reside
on permanent media, such as a floppy. The parameter MSG2AREA, a string
value not responsive to formatting directives, specifies the area
where the secondary message base should reside. Since both message bases
are written to simultaneously, they should remain identical.
If you wish to use this option, MIRRORMSG should be set to 1;
otherwise, it should be set to 0. If MIRRORMSG is set to 1, then MSG2AREA
should specify where the secondary message base should reside. For
instance
#MIRRORMSG 1 -- yeah, why not?
#MSG2AREA "b:msg" -- on floppy, of course
------
#HOLDAREA
Citadel-86 has the optional capability to save messages inadvertently
interrupted during composition for later completion. The reason we say
"optional" is the method used to save such messages is to save them as
files on disk, and in a restricted environment such an ability may not be
desirable. Thus, this feature is only available on systems in which
#HOLDAREA is defined. #HOLDAREA is another directory specification,
exactly like those of Section 1 of CtdlCnfg.Sys. All interrupted messages
will be stored there until the next time the user logs in. These files
are currently about 8K bytes long.
#HOLDAREA "hold"
------
#sysopName
This parameter is used to tell your system who the sysop is. The only
real effect of this parameter is all Mail> to sysop is automatically
routed to the account that you specify in this parameter's string value.
(This will also affect net Mail> to sysop.) If you're not using this
parameter, or the account does not exist, then Mail> to sysop will end up
in the Aide> room.
#sysopName "Me!"
-30-
------
#SYSOP-ARCHIVE
This optional string parameter is used to tell your system where to
archive the system operator's Mail. The string specifies which file the
Mail> should be archived to. If the parameter #sysopName is not specified
or if this parameter is not specified then Sysop Mail will not be
archived.
#SYSOP-ARCHIVE "c:\citadel\moocow"
------
#EDITOR
#EDIT-AREA
These two parameters allow the sysop to specify a
Sysop Editor for use at the System Console. Full information on
this feature is contained in OPER3.MAN Section X. Essentially, the Sysop
may use the editor of his/her choice for message composition when at the
System Console, and these two parameters allow the System Operator to
specify what editor to use and where to place the temporary file.
#EDITOR is the name of the editor, along with any necessary options.
It does not obey formatting directives. If #EDITOR is not present in
CtdlCnfg.Sys, then the Outside Editor is not available.
#EDIT-AREA is entirely optional, and does not disable the Outside
Editor if it is not present. The System Operator may use this parameter
to specify some area of his disk system for the placement of the
temporary file containing the message text other than the current drive
and directory (this is useful for RAM disks, etc.).
#EDITOR "q" -- qedit
#EDIT-AREA "d:\" -- in the root of drive D:
See OPER3.MAN for full information.
------
#CLEAN-CALLLOG
If this parameter exists in your CtdlCnfg.Sys, then network sessions
will not appear in your CALLLOG.SYS.
------
#ANONYMOUS-SESSIONS
If this parameter exists in your CtdlCnfg.Sys sessions in which remote
callers fail to login to be recorded in CALLLOG.SYS (if auditing is
enabled -- see #AUDITAREA). Normally, user sessions in which the caller
never successfully logs in are not recorded. This option lets you
override this behavior. This override does NOT apply to anonymous uses
of the sysConsole.
-31-
------
#CONSOLE-TIMEOUT
The optional parameter #CONSOLE-TIMEOUT allows you to specify CONSOLE
timeouts. The value you give will be interpreted as the number of seconds
the system is quiescent in CONSOLE mode before timing out (that is,
return to MODEM mode). If this parameter is not present in your
CtdlCnfg.Sys, or if its value is -1, then Console Timeouts are disabled
on your system. Example:
#CONSOLE-TIMEOUT 600
The system will timeout after 10 minutes when in Console mode.
------
#CONSOLE-DELAY
This parameter is for use on hardware with very fast video display
systems, such as fast AT class machines. Such hardware can make it
difficult for the sysop to use their own system at the sysConsole. This
parameter lets you tell Citadel-86 to delay x milliseconds after each
character when the user is at the sysConsole. For example, to tell the
system to hesitate for two milliseconds after each character:
#CONSOLE-DELAY 2 -- 2 millisecond delay after each character
This option does not affect remote users at all. Use this parameter
only if you find you need it. If it's not present then there is no delay,
of course.
II.6.d Section 3 of CtdlCnfg.Sys
This section covers the parameters of CtdlCnfg.Sys concerning the
Citadel-86 networker. We have no intention of covering the network itself
in this section; we tried to cover that in NETWORK3.MAN, and direct you
to there if you're interested.
------
#NETWORK
This parameter controls whether or not you're in the network at all.
Set it to 1, and you are. If it is set to 0, then you are not (initial
setting for our virgin copy). If you are planning to participate in the
network, then please be sure you understand the section on the
#event parameter, because you use #events to tell your system when
to communicate with other systems on the networks.
#NETWORK 1 -- This system participates.
------
#nodeDomain
This is the name of the domain your reside in. You may only reside
in one domain. This domain string is sent with each net message
originating on your system (mostly as a way to facilitate users finding
out how to send net mail to your system) (assuming you are netting,
otherwise this is meaningless), and will be displayed, generically, like
this:
<date> @<time> from <author> @<nodeName> <nodeDomain display>
-32-
The reason we say "nodeDomain display" is that it's possible for some
systems to customize the display of the nodeDomains of the messages
passing through. Assuming they aren't customizing, an example of a
display using the above and assuming the #nodeDomain is "wa" (or WA --
this is case-insensitive) would look like this:
82Nov23 from Cynbe ru Taren @ODD-DATA _ wa
Here's what ODD-DATA's CtdlCnfg.Sys entry for #nodeDomain would then
look like:
#nodeDomain "wa" -- just another string parameter
See NETWORK3.MAN for more information on domains in Citadel-86.
------
#DomainDisplay
This optional string parameter, if present, effects how domain
designations of messages from foreign systems are displayed on your
system. There is a special format to this string: somewhere within the
quotes it must contain a "%s". This "%s" will be replaced by the domain
of the message. For instance, if you wanted to override the default
behavior of putting a " _ " between the node ID and it's domain with
having the domain being placed between brackets, you'd put
#DomainDisplay " [%s]"
in your CtdlCnfg.Sys. Notice the leading space.
------
#RouteMail
This parameter controls whether or not you categorically refuse to
route network mail. If you do choose to route mail, you can still
control routing via individual flags for each node; see the RoutMail
utility.
#RouteMail 1 -- allows route mail to happen
------
#MailHub
This parameter lets you redirect mail which is domain oriented to
another system which presumably has a better chance of delivering the
Mail to the system in the domain you don't know much about. See
NETWORK3.MAN for far more detail than we provide here. An example
might be
#MailHub "Data Drum" -- current Illinois domain server
------
#ServeDomain
This parameter lets you decide if you want to be a domain-server.
See NETWORK3.MAN for more detail.
#ServeDomain "xx"
-33-
------
#NewNetPrivs
This numerical parameter let's you decide if new users should
automatically have net privileges or not. If 1, then they do; 0, they
don't.
#NewNetPrivs 0 -- let's be paranoid!
------
#NETAREA
This string parameter specifies where all the net files will be located
on your system. The "net files" are CTDLNET.SYS and various temporary
files having the suffixes ML, RFL, VTX, and SFL, plus some files with
numeric suffixes (like R3.0). NETAREA is just like LOGAREA, MSGAREA,
etc., specifying drivename, if necessary, and only a subdirectory of the
current directory of the relevant drive.
#NETAREA "netstuff" -- let's put it in a directory called
-- netstuff.
------
#DOMAINAREA
This string parameter specifies where all the domain files will be
located. See NETWORK3.MAN for more information on domains.
#DOMAINAREA "domains" -- make it a separate directory from NETAREA
------
#SHARED-ROOMS
This numeric parameter reserves room in each node record for the number
of shared rooms you think you'd like to share. Each takes up 6 bytes, so
plan according in view of the number of nodes you'll have on your node
list and the number of rooms you might want to share with other systems.
If you want to change this value later, use a utility!
#SHARED-ROOMS 4 -- conservative
------
#NET_RECEPT_AREA
This parameter specifies a directory on your system containing
all files sent to your system by some other system during
networking, using the Send File facility (this is not the same as
requesting files over the network). NET_RECEPT_AREA is a string value
unresponsive to string formatting directives, of course, and it may
specify any directory on your system, not just a subdirectory to your
current directory. So, supposing you wanted to specify
C:\CITADEL\HOLDING as the directory for incoming files from the net,
you'd have in your CtdlCnfg.Sys
#NET_RECEPT_AREA "c:\CITADEL\HOLDING" -- directory
------
#NET_AREA_SIZE
#MAX_NET_FILE
These two parameters allow you to control how much space you wish to
devote to files coming into your system from the net via the Send File
command (i.e., other systems sending you files without you asking).
-34-
NET_AREA_SIZE allows you to tell Citadel-86 how much space to devote to
the directory specified in NET_RECEPT_AREA. When a system attempts to
send you a file, Citadel-86 will get the size of the file, and then check
to see how much space is already being taken up by files in
NET_RECEPT_AREA. If the difference of NET_AREA_SIZE and the files already
in NET_RECEPT_AREA is less than the size of the incoming file, then your
system will not accept the file.
MAX_NET_FILE allows you to control how big a file you will ever accept.
If the size of the file being sent to you exceeds the value you specify
here, then your system will not accept the file being sent.
Both of these values are in terms of K. So, for instance, if you only
wanted to allow files of up 24K into your system, and only wished to
devote up to 44K to NET_RECEPT_AREA, you'd have:
#NET_AREA_SIZE 24
#MAX_NET_FILE 44
------
#callOutPrefix
#callOutSuffix
These two parameters control modem dialing during networking. These
are both string value parameters obeying formatting directives, and
should be used to convey commands to the modem. When dialing, Citadel-86
constructs a phone number to send to the phone company, and sends the
following to your modem:
<callOutPrefix><phone#><callOutSuffix>
callOutPrefix should alert the modem to dial, while callOutSuffix should
do anything necessary to finish the dialing sequence (usually, just send
a C/R to the modem).
If you have a Hayes modem, we recommend you use the following values
for these two parameters.
#callOutPrefix "ATDT" -- Tells a Hayes modem to dial out using
-- touch tones
#callOutSuffix "\r" -- puts a carriage return at the end
If you have a high speed modem, such as an USR HST, please see the
next section for special variants of #callOutPrefix when you network
with systems capable of the same high speeds.
------
#DialOut300
#DialOut1200
#DialOut2400
#DialOut4800
#DialOut9600
#DialOut14400
#DialOut19200
The new modems coming out today sometimes require different prefixes
to dial and connect at different speeds. For instance, the USR HST
requires "AT&M0D..." for most dialing, but "AT&M4D..." to call USR HST
modems at high speeds. Therefore, Citadel-86 contains a flexible dialout
-35-
prefix scheme. The above CtdlCnfg.Sys parameters are now available.
They allow you to customize your dialing by letting you define special
dial out prefixes for certain baud rates. Those you don't define will be
replaced by #callOutPrefix. If you don't have a high speed modem requiring
different dial out strings for different modem speeds, then you needn't
worry about this section.
------
#SCAN-NET-MESSAGES
This CtdlCnfg.Sys parameter, if it's present, causes all incoming net
messages to be scanned against BADWORDS.SYS. Those which fail to meet your
standard of decency are placed in the file DISCARD and a message will be
left in your Aide> room.
------
II.7 The Big Step -- Your first experience with CONFG
You should have a complete, if only minimally, CtdlCnfg.Sys on your
disk now (you DID save that file to disk when you were finished, didn't
you?), so now it's time to process it into something CTDL.EXE finds
palatable.
You do this with CONFG.EXE. First, make sure CtdlCnfg.Sys is
located on your default disk; if you are running on a floppy-only system
make sure you have the correct floppies in the drives.
Run CONFG. It will come up with some sort of identification banner,
and then begin processing your CtdlCnfg.Sys. Normally, it will echo each
parameter as it processes it. If it runs into a parameter it doesn't
recognize, or a parameter value out of range, it will come to
a stop and tell you about it (or at least it should). Make note of the
problem and edit your CtdlCnfg.Sys accordingly. If it seems critical, or
you don't understand what's wrong, review this manual, and if that
doesn't help, some active research (local Citadel-86 sysops, etc.) may
be called for. (Good luck.)
Once you get past this step, CONFG will grumble with the disk for a
moment (or two on a floppy system), and then ask you some questions.
This first set of questions depends on whether you created the system
directories (assuming you specified some of the system files belong in
their own directories) or not. If you didn't, CONFG will ask you if it
may create the directories needed for the system files; this gives you a
chance to make sure you didn't screw something up. If you didn't, then
answer 'Y' (or 'y') for each question regarding directories.
Once CONFG has decided the directories are setup correctly, it
will try to open your system files (i.e., the message file, the log file,
etc.), and since this is the first time you've run CONFG, it won't find
them, and therefore it will complain about this, and tell you it is
creating each of them.
This is the first and last time you should ever have to see the
questions about the directories, or the messages about missing system
files. If you do ever see them again, and don't know why, you may have
problems.
-36-
Next, CONFG will ask if you wish to initialize your system files.
Since this is the first time, answer 'Y'. NEVER answer 'Y' again unless
you know what you're doing, because answering 'Y' tells CONFG to ERASE all
the data in your data files.
Since you answered 'Y' (this doesn't happen when you answer 'N'),
CONFG will ask if you wish to erase and initialize your message file
(in case you didn't mean to say yes before). Type 'Y', and then sit back
and watch as CONFG creates the message base. CONFG displays the number of
'sectors' (128 byte chunks) to clear, and then counts them off as they are
cleared. If you are going to have a large (300K or more) message base
and have fairly slow disk drive(s), this is probably the time to get that
cup of coffee.
Once it is finished with the message base, it'll ask if you wish to
erase and initialize the room file, and then the log file. Since you are
still creating your system, answer 'Y' to them and watch as CONFG clears
each file.
If CONFG encounters any problems during this process, it will tell you
about it and exit without finishing. It's up to you to figure out what's
wrong at this juncture.
Once it finishes with these files, it tells you it is creating
CTDLTABL.SYS (remember that file?), and exits after a few more seconds.
You should now have a CTDLTABL.SYS on your current default disk, which
also happens to be the disk your Helps reside on.
II.8 CTDL -- That Childhood Experience
And now we get to that long awaited moment. DO IT. Run CTDL, however
you have to do it. (Is your modem on?)
If everything is put together right, you have enough memory, and
everything is configured right, CTDL will be read in, grumble at your disk
or disks for a moment, initialize your modem, rumble a little more,
and then come up with YOUR welcome banner.
If that's what happened, sit back! Didn't it feel good? Feel the
warm, golden glow? (Quick, knock on some wood.) And now you should
probably turn to OPER3.MAN, the everyday care and feeding of Citadel-86.
The remainder of Section II covers advanced installation topics which you
shouldn't concern yourself with right now, with the exception of Section
II.8 which covers what to do in case of unexpected power losses and
crashes. You should certainly read the advanced topics of Section II at
some time in the future, because we talk about automating your
installation with batch files, command line arguments, and other beasties;
however, right now you're just getting used to being a Citadel-86 sysop.
Delving into other topics when you're not familiar with the basic
features of the sysop side of Citadel-86 could turn into a messy disaster
neither you, nor we, would wish to deal with. So turn to OPER3.MAN.
-37-
If CTDL DIDN'T come up, there are a large variety of reasons for the
failure. If your system seemed to make it up but came down relatively
gracefully (i.e., left you at the system prompt), check your disks for a
file named CRASH. It may give you (or the person you turn to for help!)
a hint on what might be wrong. If it seems to think there's an error with
a file, perhaps you forgot to configure MS-DOS correctly. If CTDL itself
complains about "no ctdltabl.sys!", then either the file isn't on your
default disk when you called CTDL, or CONFG didn't successfully finish.
II.9 When the inevitable happens
Citadel-86, just like any other software, is not immune to such things
as crashes, power failures, hardware failures, and the like. When this
happens, you must take corrective actions, because normally such
occurrences will leave your system missing (or with a mangled version
of) the valid version of CTDLTABL.SYS.
In order to rebuild this vital file, you must run CONFG again. CONFG
will digest your CtdlCnfg.Sys, and then survey and summarize for CTDL the
current contents of your data files. Once it is finished, you may
(usually) run CDTL.
Let's go over exactly what will happen. When you run CONFG, it should
go through CtdlCnfg.Sys, just as it did in Section II.7, echoing each
parameter as it encounters it. Once finished, however, it's behavior will
differ. It should not ask you if it may create the appropriate directories
(since they should already exist), and it should not complain about not
being able to find any of your system files (these should still exist,
too!). However, it WILL ask you if you wish to erase and initialize your
system files. This time reply N (with vigor!). CONFG will immediately
begin analyzing your data files, and after several minutes, depending on
the size of your system, it will produce a CTDLTABL.SYS; your system will
be fit to run again.
Obviously, there are benefits to automating this process, particularly
for handling power outages. Consult the section on batch files and the
section on command line options for details on effectively automating your
system in such cases.
II.10 Installation -- Advanced Topics
By now you should have a pretty good feel for Citadel-86 procedures,
but may wish to look into automating Citadel-86. The first two
subsections discuss subjects pertaining to that minor miracle; the third
section will try to bring the first two together, with some representative
examples of DOS BAT files.
II.10.a Command Line options
A 'command line option' is a string of letters you type directly
following the program name. Each command line option should be separated
from the program name and any other command line option by at least one
space. Command line options are used to tell a program to do something it
might not do if the option wasn't there. In abstract, from drive C: of
MS-DOS:
-38-
C><program name> <command line option 1> <c.l.o. 2> ...
Both CONFG and CTDL have a set of command line options which you can
use to make them do special things. We'll treat each program separately.
CONFG
The CONFG program will respond to two options, which may appear
together or individually on the command line.
The first parameter is called ONLYPARAMS. When CONFG finds this
parameter on the command line, CONFG will NOT try to process your data
files. Instead, it will limit itself to reading and processing your
CtdlCnfg.Sys file. This ability is useful when you wish to change one of
the CtdlCnfg.Sys parameter values without going through the entire
process of reading your data files. You MUST have a completely valid
CTDLTABL.SYS available for CONFG to read; otherwise, this option will be
ignored and your data files will be processed.
The second parameter is any string of letters not matching any
other command line option for CONFG. If this 'option' (you can just use
some random string of characters) is on the command line, then CONFG will
not ask whether or not you wish to erase and initialize your data files.
Instead, CONFG will assume your answer was 'N' (i.e., you simply wish
to perform a reconstruction). Thus, CONFG will never query the keyboard
for attention, and can run unattended, so long as all the data files are
in their places.
CTDL
The CTDL program officially supports several options, and unofficially
several more which may or may not be detailed here. An 'official' option
is an option we anticipate supporting for a while; an 'unofficial'
option is an option used for experimentation, and will someday be moved
into the CtdlCnfg.Sys parameter file (or just thrown away).
The first command line option is called +netlog. This option applies
only to networking systems. When employed, it will cause a log of all
network sessions to be written to the file NETLOG.SYS in your NETAREA
directory.
+nochat completely shuts the Chat option off. Normally, an aide can
force a chat when Chat is turned off. This command line option prohibits
aides from forcing Chat when Chat is turned off. This option does nothing
when Chat mode is on.
+vortex activates the Vortex Detection and Management feature. For
more information on this feature, see NETWORK3.MAN Section III.3.j.
bps= is of use to those sysops using the #ISDOOR parameter. See the
Operations Manual Section XII for full details on the use of Citadel-86 as
a door.
+anon causes sessions in which remote callers fail to login to be
recorded in CALLLOG.SYS (if auditing is enabled -- see #AUDITAREA).
Normally, user sessions in which the caller never successfully logs in
are not recorded. This option lets you override this behavior. This
override does NOT apply to anonymous uses of the sysConsole.
-39-
+vandaloff disables the vandalism checking which occurs when an
unlogged user sends Mail to sysop. This checking consists of seeing if
the message contains the same character occuring in a row more than
8 times (e.g., "iiiiiiiii"). When this option is present, the checking
is disabled.
+nomeet disables the <M>eet User and .Enter Configuration Biography
commands. See OPER3.MAN for more information on these commands and why
you might wish to disable them.
+wx instructs Citadel-86 to attempt to use Wxmodem rather than
Ymodem (or Xmodem) during its network transfers. This option is not
recommended.
+noecho disables the screen echo (also accessible as the 'E' option on
the Sysop Menu) when Citadel-86 comes up. This is useful for systems
with extremely slow video displays or systems operating in public.
lddelay= lets the sysop decide how long Citadel-86 will wait for
a connection on a long distance network call. This defaults to 60
seconds, and the value you place after the '=' should be specified in
seconds. For instance, "lddelay=120" would request a 2 minute delay.
This is useful for calls to other continents.
lowfree= allows the sysop to define a minimum free space left on
disk. If a user attempts to upload a file to a disk that doesn't
have at least as much free space as specified in this parameter (units
are K) then the upload is not allowed.
paranoia= specifies the number of messages a user may leave in a
room. If the limit is exceeded then the user loses carrier.
+conpwd indicates that the sysop password should be applied at the
system console as well as to aides calling in from remote (although no
one need be logged in at the system console). This, in effect, makes the
system console almost as secure as the remote side of Citadel-86 (keeping
in mind the mentioned caveat). This option is inoperative if you are not
using the remote sysop password parameter (#sysPassword).
A command line option not matching any of those listed so far
is known as the 'crash' option. It will cause CTDL to leave a message in
your Aide> room informing you Citadel-86 apparently came up from a
crash at the time of the message. This is useful for batch files.
II.10.b BAT files and program termination ERRORLEVELS
MS-DOS BAT files depend heavily on the concept of ERRORLEVELs, and we
encourage you to read the MS-DOS manuals for a full explanation of BAT
files. The CTDL program, on termination, will set the MS-DOS ERRORLEVEL
level to a value you can use to write useful BAT files; you may also
cause other ERRORLEVELS to be set, as explained earlier in this manual.
The values indicate the reason Citadel-86 terminated, and the ones
reserved by Citadel-86 are discussed here. Feel free to use other
ERRORLEVELS at your discretion.
0 -- A normal exit. This indicates the sysop took the system down
via e<X>it on the Sysop's menu (see OPER3.MAN for an explanation
of the sysop menu).
1 -- Exit due to detecting the existence of CTDLLOCK.SYS, which indicates
this installation is already "up." Normally, this means
you used the <O>utside commands (see the Sysop's Manual) to go to
the MSDOS shell, leaving Citadel-86 up but inactive, and attempted to
bring your system back up, rather than typing 'exit'. This is a
failsafe so you do not accidentally bring Citadel-86 up within
-40-
itself. Occasionally, you may be using <O>utside commands to do
something when you are forced to reboot (power outage, program
crash, etc.), in which case the CTDLLOCK.SYS file is no longer
accurate. In cases like these, the correct procedure is to delete
CTDLLOCK.SYS and then attempt to bring Citadel-86 up again.
2 -- This was a crash exit. Citadel-86 is capable of recognizing a number
of fatal internal errors; when any of them are encountered,
Citadel-86 will hangup the current caller and immediately terminate
with this value. If a crash of this sort occurs, CONFG should be
run before attempting to run CTDL again. Some (not all) of these
fatal errors include non-existence of CTDLTABL.SYS (very, very
common, due to power failures), missing system files (such as the
message file, etc.), and corrupted internal data, which indicates
the possibility of a bug in CTDL. Some of these crashes will leave
the files CRASH and AUDIT behind, which can give hints on what's
wrong (particularly CRASH).
3 -- A remote sysop exit. Since an Aide can be given access to the sysop
menu from remote (see Section II.6.c on the parameter #sysPassword),
s/he is capable of taking your system down from remote. A number of
sysops indicated it might be useful to distinguish between a
sysop exit and a remote sysop exit, so this ERRORLEVEL is supported.
4 -- This is a Door exit, indicating the current user has requested
access to a Door (program) which you have provided via the #door
parameter. When your BAT file receives this Errorlevel, it need only
do two things (essentially): run the program C86DOOR, and then loop
back around to bring Citadel-86 up.
One more note. When you write a BAT file, make sure you handle
the ERRORLEVELS in a "top to bottom" manner. DOS will not process the
ERRORLEVELS correctly otherwise.
II.10.c Making BAT files and command line options work for you.
No program is ever bug-free. However, it is nice to pretend one
is, and an effective way to pretend a particular program has achieved
such a goal is by never having it require your attention when you are
attending to other things.
Citadel-86 tries to emulate this sort of utopian software by returning
a value to MS-DOS when it terminates gracefully, as we described above,
which allows you to construct BAT files handling most contingencies.
Basically, we have to handle 'emergency' situations, which consist of
coming up from a reboot and handling a graceful crash, and handling
non-emergencies, which are coming out of C-86 in response to timeouts,
sysop exits, remote sysop exits, and Door exits.
First, let's look at the emergencies. Typically, an emergency never
happens at a convenient time; instead, you're off on vacation, at work,
or feeding the cat. Therefore, the software has to handle the emergencies
on its own, within limits.
In both of our emergency situations, the system must go through a CONFG
call. When we looked at the command line options of CONFG, we saw a
nonsensical argument on CONFG's command line tells it not to ask for
-41-
operator input regarding whether the system should be erased, but rather
to simply re-analyze the data in preparation for a CTDL call. Therefore,
part of our BAT file strategy will contain the line
CONFG gleeeeepy
which we may end up placing in its own BAT file.
Looking into the section on ERRORLEVELs, we should have also noticed
one of the events causing a graceful crash is the absence of
a CTDLTABL.SYS file. Thus, we can classify a power down as simply another
graceful crash -- after we make some modifications to your boot disks
AUTOEXEC.BAT. But first let's look at just how we should handle these
'graceful crashes'.
We said a graceful crash produces an ERRORLEVEL of 2. With this
in mind, we can put in one of our BAT files some lines looking roughly
like this:
CTDL
...
if ERRORLEVEL 2 Fixit
Fixit, in this case, is another BAT file which will fix the system for us.
I.e., it runs CONFG and gets the system back up on its feet. What should
it look like? Well, first we want to start the file as mentioned above:
CONFG Gleeepy
Once CONFG finishes, we need to restart CTDL. As it happens, MSDOS BAT
files do not 'stack' up; if A.BAT calls B.BAT, when B finishes it does
NOT return to A, but instead falls out to MS-DOS. This makes it easy to
write BAT files to accomplish our purposes. Suppose we call our main BAT
file RUNIT.BAT (the file containing the 'if ERRRORLEVEL 2 Fixit' line
in it). Then we can simply finish the FIXIT.BAT file with
RUNIT CRASH
We'll explain the CRASH command line option later.
What about the rest of those ERRORLEVELs? Well, let's solidify your
RUNIT.BAT a little more.
CTDL
if ERRORLEVEL 5 goto timeout
if ERRORLEVEL 4 goto door
if ERRORLEVEL 3 goto remote
if ERRORLEVEL 2 Fixit
if ERRORLEVEL 1 goto lockfile
if ERRORLEVEL 0 goto alldone
(Note the descending order we use here. This is necessary due to the
method MS-DOS uses to handle 'if' statements.) This was simple -- we just
put off all the work. However, most of the work is yours, because it is
really up to you to figure out what you wish to do when your system
times out (CtdlCnfg.Sys's #event parameter -- we simply assumed you
used a 5 in the <depends> field of an external #event parameter) and when
your remote sysops bring your system down.
-42-
So let's flesh out the rest of this sample RUNIT.BAT.
:loop
CTDL %1 ...
shift
if ERRORLEVEL 5 goto door
if ERRORLEVEL 4 goto timeout
if ERRORLEVEL 3 goto remote
if ERRORLEVEL 2 Fixit
if ERRORLEVEL 1 goto lockfile
if ERRORLEVEL 0 goto alldone
:door
C86door
goto loop
:remote
REM put here what you want remote terminations to cause to happen. If you
REM want to rerun CTDL, you'd have 'goto loop'.
:timeout
REM put here what you want timeouts to do (backups or whatever)
...
REM we assume you'd want to restart Citadel-86 afterwards.
goto loop
:lockfile
REM here you tried to bring Citadel-86 when it already seems to be up.
goto unknown
:alldone
REM And now the sysop at the console took us down, so we'll die.
Most of this should be pretty easy to understand. The '...' on the
CTDL command line simply means whatever options you choose to put on the
line. However, the '%1' may be puzzling. As the MS-DOS manual indicates,
%1 is the first argument on the command line of this BAT file. Now,
let's look back at the FIXIT batch file, where we put RUNIT CRASH. This
will force the parameter CRASH to appear on your CTDL command line, which
CTDL will interpret as a 'nonsense' argument, therefore causing a 'crash'
message to appear in your Aide> room. Since it was the FIXIT batch file
ultimately causing this message to appear, this is good behavior.
But what of the SHIFT following the CTDL command line? This causes
the RUNIT command line arguments to shift 1 to the left. Since there were
no more arguments to RUNIT, any executions of CTDL subsequent to the SHIFT
call, while within this BAT file, will not result in messages in the Aide>
room. And why might there be any more calls to CTDL after the first one?
Look at the commands following the timeout label.
This is just an example. Have fun.
II.10.d Result Code and Call Progress Detection
One of the problems with the external serial interface of the IBM PC
and its clones is its inability to directly detect the speed a modem
has made connection with a caller via the RS232 interface. Therefore,
Citadel-86 can detect baud rates by reading the result codes most Hayes
modems spit out. This section details what you must do to use this
capability.
-43-
There are two things you must do to attempt to use your modem's
result codes for autobaud detection (please note some modems are so
awful you can't use their result codes to accomplish autobaud detect).
First, your modem must be configured to return result codes. Typically,
you do this using the #modemSetup parameter of CtdlCnfg.Sys, and the Hayes
command is usually "ATQ0". However, you should consult your modem's
manual during these machinations and incantations.
Further, you may need to decide if you want the result codes to be
returned in Verbose mode or Non-Verbose mode (ATV1 and ATV0). While
Citadel-86 can use either mode if correctly configured (to be explained),
you may have some preference.
The second task is to inform Citadel what the result codes will be.
Not all "Hayes compatible" modems return the same result codes for the
same results. Therefore you must provide them. How?
By constructing a simple text file named RESULTS.SYS. It must reside
in your #ROOMAREA (CtdlCnfg.Sys) directory, and it must be a normal MS-DOS
text file. Within it you place lines of the following format:
#<result code identifier> <result code value>
A "result code identifier" is one of a list of Citadel-86 supported
identifiers for result codes, while "result code value" is the string
your modem will return for that identifier. The identifier is contained
from the "#" sign to the first space (and there should only be one space,
no more), while the result code value is contained from the character
following the space to the end of line (thus allowing spaces in the result
code value).
For example, one of the identifiers is RESULT-300, which Citadel-86
uses to identify a 300 baud caller, and most Hayes compatible modems
we are aware of return CONNECT when a caller connects at 300 baud. In
order for the autobaud to use that value to identify a 300 baud caller,
you would place the following line in your RESULTS.SYS file:
#RESULT-300 CONNECT
We, of course, assume you have your modem configured for Verbose
mode. If you are using Non-Verbose mode, and your modem returns 1 for a
300 baud connect (a typical string for Hayes compatible modems, again),
then you would place
#RESULT-300 1
in the RESULTS.SYS file. But what if you weren't sure if your modem is
going to be in Verbose or Non-Verbose mode during operation, for some odd
reason? Well, it is perfectly valid to have BOTH of those strings in
RESULTS.SYS, and each will be used as needed!
#RESULT-300 1
#RESULT-300 CONNECT
-44-
Now that may sound somewhat trivial, but it is only an example. A valid
real-world example involves MNP capable modems. Some of these modems
return differing result codes, dependent on whether the caller is using
an MNP modem or not. For instance, a normal caller at 2400 baud will
cause the modem to return CONNECT 2400, but a MNP caller at 2400 baud will
cause the modem to return CONNECT 2400 RELIABLE. Here is where the
ability to place both of those results in RESULTS.SYS (or even all 4 if
you want to cover both Verbose and Non-Verbose modes) can come in real
handy.
#RESULT-2400 CONNECT 2400
#RESULT-2400 CONNECT 2400 RELIABLE
AUTOBAUD IDENTIFIERS
The following are valid autobaud identifiers, and any of them may
appear more than once with different values as desired.
#RESULT-300
#RESULT-1200
#RESULT-2400
#RESULT-4800
#RESULT-9600
#RESULT-14400
#RESULT-19200
#RING
#RING is used to identify rings, which can be useful. The autobaud
identifiers are used when a caller has been detected. Other results, such
as the Call Progress results which are about to be discussed, are
discarded during autobaud detection in favor of searching for Autobaud
strings.
CALL PROGRESS IDENTIFIERS
Some modems can support call progress detection when configured
correctly. (Call progress detection is the ability to recognize no
dialtone, busy signals and other such minutae.) Citadel-86 can use those
result codes if available to speed dialing during both networking and
during use of the <D>ialout option of the Network menu. The format of
these identifiers are the same as the Autobaud identifiers. The list of
valid identifiers:
#DIALTONE
#NO-DIALTONE
#OK
#NO-CARRIER
#BUSY
The values you specify for #NO-DIALTONE, #NO-CARRIER, and #BUSY,
when detected during callout, will cause Citadel-86 to conclude the
call was unsuccessful and therefore abort it. As with the Autobaud
identifiers, you may specify any of these parameters multiple times to
cover multiple situations. For example, if your modem returns BUSY when
a busy signal is detected, you would place
#BUSY BUSY
in your RESULTS.SYS.
-45-
II.10.d.1 Restrictions on Result Codes
Unmodified Zenith Z-100s are incapable of reading and using Hayes
result codes due to the hardware implementation of the serial port.
Modifications can be made to the cable connecting the Z-100 to the modem
and to your CtdlCnfg.Sys allowing the use of Hayes Result codes.
Please see the special section in this manual regarding Z-100
peculiarities.
II.10.e Extreme options in CtdlCnfg.Sys
Some of the modem I/O routines in Citadel-86 can be changed by the
adventurous sysop via the CtdlCnfg.Sys file. Normally, Citadel-86 uses
built-in modem routines designed to handle the normal situations of Z-100s
and the two COM ports of PClones. However, they can be replaced through
manipulation of CtdlCnfg.Sys.
When do you want to use these options? NEVER, really. But you
probably do when you have an unusual, but not unique, modem setup. If you
feel your modem connection is really, really odd, you may wish to acquire
the source code for Citadel-86 and perform some hideous hacks of your own.
These options are useful when you wish to do something unusual with your
installation.
All right, what ARE these 'routines,' anyways? They came from the CP/M
version of Citadel, where they were the entirety of Citadel's modem I/O.
To quote the old documentation that accompanied them, they "...implemented
a virtual machine with a single accumulator", which is another way of
saying a primitive psuedo-assembly language was made available to
the sysop for designing their own modem I/O. The reason they
exist in Citadel-86 is partly inertia and partly their flexibility: the
two types of machines Citadel-86 supports, Zenith Z-100s and most
PClones, have radically different serial interfaces. Using the
appropriate routines saves some (probably only a trivial amount of) code
room.
OK, let's get concrete. Each routine available to you is composed
of two parts, the name of the routine and the code which implements it.
Abstractly, it looks like this:
#start <routine name>
#code <instruction> <optional instruction data>
#code <instruction> <optional instruction data>
...
Usually, the last #code instruction will specify a RET.
Here is the list of routines currently supported:
HANGUP -- This routine MUST force your modem to hangup.
INITPORT -- This routine should initialize your port AND your modem.
(NOTE: If INITPORT exists, #modemSetup should NOT exist.)
CARRDETECT -- This routine MUST return (see the RET instruction) a 0 when
there is no carrier, and a non-0 value when there is
carrier.
SET300 -- This routine should set your modem's port to 300 baud.
SET1200 -- This routine should set your modem's port to 1200 baud.
-46-
SET2400 -- This routine should set your modem's port to 2400 baud.
SET4800 -- This routine should set your modem's port to 4800 baud.
SET9600 -- This routine should set your modem's port to 9600 baud.
SET_HIGHER -- This routine should set your modem's port to your choosing
(this option may not be supported in the future).
ENABLE -- This routine must ENABLE your modem for answering the phone.
DISABLE -- This routine must DISABLE your modem from answering the
phone.
The instructions available to you simulate a very simple machine with
one accumulator and a scratch array. You'll find the instructions crude,
primitive, and limiting. The scratch array is addressed from 0, and has
40 elements. Here they are:
LOAD x -- This instruction loads the accumulator with the value in
location x of memory (!).
ANDI x -- This instruction performs a logical AND of the accumulator
with x and places the result in the accumulator.
ORI x -- This instruction performs a logical OR of the accumulator with
x and places the result in the accumulator.
XORI x -- This instruction performs a logical XOR of the accumulator
with x and places the result in the accumulator.
STORE x -- This instruction stores the accumulator in the specified
address of memory(!).
LOADI x -- This instruction loads the accumulator with the value of x.
RET x -- This instruction forces the routine to return to the caller
with the value of the accumulator (in this case, 'x' is just
a dummy value).
INP x -- This instruction causes the accumulator to be loaded with the
value currently present at port x.
OUTP x -- This instruction causes the accumulator to be sent to port x.
PAUSEI x -- This instruction causes the Citadel-86 installation to pause
for x/10s of a second.
ARRAY[]= x -- This instruction stores the accumulators value in the
specified location of the scratch array.
ARRAY[] x -- This instruction loads the accumulator with the value in the
specified location of the scratch array.
OUTSTRING "x" -- This instruction causes the string "x" to be sent to the
modem.
OPR# "x" low high -- This instruction causes the string "x" to be
displayed, followed by a request for a number. Low
and high specify the lowest and highest acceptable
values. The accumulator receives the value specified
by the user.
In SUPPORT.LZH there should be a file named PSUEDO.DOC. It contains a
listing of all the default routines used by Citadel-86. If you have ANY
plans at all for using your own routines, first examine those in
PSUEDO.DOC, both to understand what is used for a default, and for working
examples of how to write valid routines.
And, lastly, REALLY WE HOPE YOU DON'T HAVE TO ENGAGE IN THIS SILLINESS.
-47-
III. ZENITH Z-100 NOTES
III.1 Introduction
This section contains notes concerning the hardware configuration
of Zenith Z-100s as it applies to Citadel-86. Most, perhaps all, of
these contributions were contributed by Sysops using the Zenith Z-100
as their hardware, and the authors of this manual would also like to
take this opportunity to thank Eric Brown, System Operator of Primordial
Ooze, for providing the serial interface code for Borland's Turbo C
(the current C dialect in use today for Citadel-86) for Z-100 hardware.
III.2 Scary but Innocuous Behaviors
First off, whenever Citadel-86 is brought up on a Zenith Z-100, the
System Operator will note his or her screen is decorated with a
series of four "WILD INTERRUPT" messages. The experienced Z-100 owner
will recognize these as the normal prelude to a full system crash.
However, in the case of Citadel-86, this is not true. It would appear
Borland's Turbo C, when compiled and linked for Large model (which
is what we use for Citadel-86), causes the Z-100 to generate these
messages but does no actual harm to the system. Several Z-100 BBSs have
been running for months now, and have suffered no problems, so, when you
see these messages, ignore them.
III.3 Result Codes
The following was contributed by K-9, System Operator of the Dog House
BBS, for which we thank him.
Written by K-9,
The Dog House BBS
612/460/6056
11/28/87
When you are using a communications program written for the PC on a Z-100
certain RS-232 characteristics that are different will prevent their use.
To overcome the difficulties the communications routine used with the
Z-100 had to be different than with a PC. As a result when the AUTO-BAUD
DETECT feature was released the Z-100s weren't supported. Thanks to
information I had on the differences in the port and Hue, Jr.s prowess
with the coding the feature is now supported on Z-100s.
To connect an autodial modem to jack J2 and support AUTO-BAUD DETECT you
need to know how the Z-100 RS-232 port functions.
To make any autodial modem dial, you type commands which are sent out
your port to the modem; ideally, both what you type and the verbal
responses which come back from your modem should appear on your screen.
While a Z-100 won't prevent commands you type from getting to your modem,
it won't display anything from the modem until the modem indicates it has
linked up with a remote system, ie. has Carrier Detect high.
Actually, what causes a Z-100 to act this way is that a Z-100 won't let
anyting come into it's J2 port while your modem is applying a negative
signal to pin 8 on the port. Data is allowed to enter only when no signal
or a positive signal is applied to pin 8.
-48-
What is normaly attached to pin 8 is an output from the modem called
Carrier Detect (CD or DCD, for short); carrier detect is negative when
the modem isn't linked with a remote system, and positive when it is.
While Citadel needs these outputs for AUTO-BAUD DETECT, the unpleasant
side-effects are untolerable.
The solution is to modify your cable so that the modem's DCD output is no
longer attached to pin 8 on your J2 connector, but is available to Citadel
on pin 6, instead. This modification won't damage anything, and won't
have any adverse effect on performance of the computer.
The procedure is different depending on whether or not the modem is a
Hayes Smartmodem compatible. The exact mechanics of making this modi-
fication depends on your cable and modem.
1. Begin with by attaching the cable between the modem and the J2 port
at the modem end. Open up the connector. Find the wire that goes to
pin 8 (there are tiny numbers on the face of the plug). Cut that wire
close to the back side of the plug. If you are using a Hayes Smartmodem
or US Robotics Password you can skip the next two steps.
2. Find the wire that goes to pin 6. Cut it, leaving a length of about
1 inch still attached to the pin.
3. Strip the insulation from the end of the wire that did go to pin 8.
Also, strip the wire still attached to pin 6. Twist the two wires
together and then solder (preferably) or tape them together. Make sure no
bare wires are exposed.
4. Re-attach the cable to the modem. You are finished with the hardware
modification if you have the modem switch settings set proper. Normal
switch setting recommendations for the modem still apply. Only change you
will need to make with the modem is to enable result codes which are
normally disabled and have digits vs. verbose (word) responses enabled.
The CtdlCnfg.Sys file as distributed with V3 supports the digit codes.
You can also change the result codes via your modem initialization string
by setting the following values:
The Q value should be changed to 0 (Q0) to mean result codes will be sent
The V value should be changed to 0 (V0) to send result codes as digits
There are some additional changes which need to be made to the
CtdlCnfg.Sys file to use AUTO-BAUD DETECT.
Good luck!
K-9
-49-
ctdlCnfg.sys
This is the configuration file for the Citadel-86 bulletin board
system. It is read in by confg.exe which sets up a "ctdlTabl.sys" file
recording the configuration parameters. (CtdlTabl.sys is read by the
other Citadel programs.) This file must be edited to be appropriate to
the local environment. Lines not beginning with "#" are ignored by CONFG
and may be deleted once the file is successfully configured -- they are
purely documentary. For more detail, consult the CITADEL-86 SYSOP MANUAL.
GENERAL STRING FORMATTING CONTROLS:
The following are supported:
"\n": CR-LF
"\t": Tab character
"\b": Non-destructive Backspace
"\r": CR
"\f": Formfeed
"\"": '"'
"\\": Backslash
"\<xxx>": The octal* ASCII value is output
SECTION 1: NECESSITIES AND MISCELLANEA
SYSTEM TITLE
nodeTitle is printed after the "Welcome to" and before the "Running..."
lines of the banner that pops up on carrier detect, UNLESS BANNER.BLB
exists, in which case the entire "Welcome to <nodeTitle>" line is
replaced with the contents of BANNER.BLB. nodeTitle is a string value
that accepts formatting directives and goes through the Citadel
formatter.
#nodeTitle "Our Name" -- An obvious imposter
SYSTEM NAME
nodeName is purely for networking purposes. Messages which
originated on your system will have headers looking like:
82Nov23 From Cynbe ru Taren @ODD-DATA
This should be a short (for the sake of the reader!) mnemonic
identifying your node for humans. It does not use formatting directives.
#nodeName "ODD-DATA" -- The original Citadel (kow-tow, everyone)
SYSTEM ID
nodeId is also purely for networking purposes. Messages which
originate on your system will be marked with the nodeId, but it will
not normally be printed out. It is primarily for the use of the
networking support software, and forms a globally unique name and
address for your system. It consists of a country abbreviation
followed by area code and system phone number. This string value does not
use formatting directives. Country abbreviation for the US is "US", for
Canada is "CA". (For others, see COUNTRY.DOC.)
#nodeId "US 612 470 9635"
-50-
SYSTEM BASEROOM
baseRoom is the homeroom of the Citadel in operation, the place you
go when there are no more rooms with unread messages left. This is
usually known as the Lobby> on most systems. It's simply a nice,
easy way to customize and give character to your system..
#baseRoom "Glops"
SYSTEM BASE FLOOR
MainFloor is the home floor of the Citadel in operation, the floor
where baseRoom, Aide, and Mail are located. It's another nice, easy
way to customize your system
#MainFloor "Da Basement"
SYSTEM ENCRYPTION SEED
CRYPTSEED is a number used in encrypting the data files. Change
it once when you install the system, but not thereafter -- or you
won't be able to read the existing files any more.
#CRYPTSEED 333 --
UNLOGGED USER'S SCREEN WIDTH
This parameter is used to specify an unlogged user's screen width
(including banner display). If not present, defaults to 40.
#UNLOGGED-WIDTH 79
DATA FILES SIZE: MESSAGE BASE
MESSAGEK sizes "ctdlmsg.sys", the file message text is stored in. The
size of this parameter together with the rate at which message text is
entered determines message lifetime.
#MESSAGEK 300 -- 300Kbyte ctdlmsg.sys
DATA FILES SIZE: MESSAGES PER ROOM
MSG-SLOTS defines the maximum number of displayable messages per room
on your room, except for the Mail> room.
#MSG-SLOTS 58 -- 58 is kind of traditional
DATA FILES SIZE: MESSAGES PER MAIL ROOM
MAIL-SLOTS defines the maximum number of displayable messages for each
user's Mail> room.
#MAIL-SLOTS 58 -- Yet another tradition...
DATA FILES SIZE: ROOM FILE
MAXROOMS defines the maximum number of rooms on your system.
#MAXROOMS 64 -- This is usually enough
-51-
DATA FILES SIZE: LOG FILE
LOGSIZE is the number of entries that you want in your log. Once
you've selected a log size and have configured, you may NOT shrink
the log except by destroying the log totally. There is a utility
available for expanding the log, called DATACHNG.
#LOGSIZE 180 --
**DATA FILE LOCATIONS**
The next several parameters allow you to specify where certain system
files are to appear on your system. Please note that only subdirectories
of the disk you specified are legal. Disk specifications are legal.
This parameter specifies where you want your help files located in your
system.
#HELPAREA "helps" -- All help files located in subdir
-- "helps"
This applies to the CTDLLOG.SYS file.
#LOGAREA "a:log" -- in subdir "log" on drive a:
This applies to the CTDLROOM.SYS, CTDLBAD.SYS, and CTDLARCH.SYS files.
#ROOMAREA "system" -- in subdir "system"
This applies to the CTDLMSG.SYS file.
#MSGAREA "" -- current directory of default disk
This applies to the CTDLFLR.SYS file.
#FLOORAREA "floors" -- its own subdirectory for no particular reason.
AIDE SCOPE:
The AIDESEEALL parameter controls the scope that Aides have on the
installation. If this parameter is set to 0, then Aides are only allowed
to see public rooms and private rooms that they are told about;
private room creation will leave an entry in the Aide> room indicating
that a room was created, but not the name. An Aide at the SysConsole
will, however, see all rooms. If this parameter is set to 1, then all
Aides will see all rooms on the system, public or private.
#AIDESEEALL 0 -- Aides see nothing
NEW USER CONTROL:
LOGINOK controls whether users without a password can login from
remote. If LOGINOK is 1, they may; if LOGINOK is 0, then the only place
that new accounts may be entered is from the system console.
#LOGINOK 1 -- user-established accounts
-52-
MESSAGE ENTRY CONTROL:
If ENTEROK is 1, callers that are not logged in may enter messages. If
0, then they must login first before they can enter messages (except for
Mail> to the Sysop. Note that Anonymous rooms are not an exception.
#ENTEROK 0 -- login first
READING CONTROL:
If READOK is 1, then unlogged callers can read messages. If READOK is
0, then users must login before reading messages.
#READOK 0 -- login first
ROOM CREATION CONTROL:
If ROOMOK is 1 then regular folks can create new rooms, else only those
with aide privilege can do so.
#ROOMOK 1 -- general room-creation privileges
MAIL CONTROL:
If ALLMAIL is 1, all get privileges; 0 means only aides have the
privilege.
#ALLMAIL 1 -- Everybody can send mail
INITIAL DOOR PRIVILEGES
If DoorPrivs is 0, then users must ask for door privileges; otherwise,
they automatically have them on initial login.
#DoorPrivs 0 -- A prudent policy; also, the default.
INITIAL FILE PRIVS
Use this parameter to decide if people have file download privs
when they first logon or if they have to request them.
#FILE-PRIV-DEFAULT 1 -- yes
COMPUTER HARDWARE TYPE:
Setting IBM to 1 implies the system is a PClone, and to use some
internal routines for accessing modem. If IBM is 0, then substitute
other special routines specific to the Z100 for accessing modem.
#IBM 1 -- IBM clone
COM PORT:
The COM parameter allows the sysop who is using an IBM to select
either COM1 or COM2 as the communications port. This parameter is
meaningless for Z-100s.
#COM 1 -- COM1 is the selection
-53-
SYSTEM BAUD RATES:
SYSBAUD defines the baud rates supported by this installation. Use
these values to indicate what maximum baud rate your system runs at:
0 - 300 baud
1 - 1200
2 - 2400
3 - 4800
4 - 9600
5 - 14400
6 - 19200
#SYSBAUD 1 -- A 3/12 system.
MODEM INITIALIZATION:
modemSetup specifies what should be sent to the modem after
initializing the port. While Hayes/compatibles are recommended, other
types of modes have been successfully used with Citadel-86, such as
TransModems.
#modemSetup "AT S0=1 M1"
MODEM REINITIALIZATION:
REINIT lets you reinitialize the modem after each call at the highest
baud rate the modem will recognize. If this parameter is not present,
then the modem will not be reinitialized. Formatting directives are
recognized.
-#REINIT "AT"
MODEM MANAGEMENT
Citadel-86 normally drops DTR (for novices, on most modems this causes
the modem to drop carrier and disables auto-answer until DTR is brought
back up) when it doesn't want a caller calling in. This typically
happens when the system operator logs in at the console or the system
is digesting messages from a network session. You can modify this
behavior by defining the two strings below, and they come into action
only when the system operator logs in at the console (i.e., when you
touch ESCape). The first string, #DISABLE-MODEM, is sent to the modem
when you touch the ESC, while the second, #ENABLE-MODEM, is sent when
you put the system back into MODEM mode. They let you do such things
as take the modem off-hook (generate a busy signal) when you are using
the system. One note: the system will NOT add carriage returns to these
strings automatically, so make sure you do!
-#DISABLE-MODEM "ATH1\r" -- This would take the modem off hook
-#ENABLE-MODEM "ATH0\r" -- This would put the modem on hook
-54-
PORT LOCKING
You can have your installation "lock" the serial port at a given
speed and let the modem handle details concerning buffering, etc. On
some modems such as USR HSTs, etc., this can result in a measurable
increase in through-put; for some modems, you HAVE to do this in order
to use the higher speeds. HOWEVER, you have* to know what you're doing
or you shouldn't do this. This parameter has a numeric value which
specifies the baud rate to lock the port at, just like #SYSBAUD. You
should consider using #REINIT to instruct the modem about your port
locking, so that everytime the modem is told to hung up it is reminded
about the port locking.
-#LOCK-PORT 4 -- This would lock it at 9600 baud
OLD VIDEO
As noted in INSTALL3.MAN, some systems don't like Citadel-86 video
support. If your system doesn't, enable the following parameter. Note
the lack of value after the name -- that's on purpose!
-#OLDVIDEO -- disabled.
SYSTEM SCREEN COLORS
FOREGROUND
BACKGROUND
STATUS-FOREGROUND
STATUS-BACKGROUND
These parameters allow control of the foreground and background colors
of the screen, including the status bar. See INSTALL3.MAN for a full
list of supported colors. The generic setup should cause the status bar
to have black letters on a gray background, while the rest of the screen
is white letters on a black background. See the Ease utility for an
easy way to select colors.
#FOREGROUND WHITE
#BACKGROUND BLACK
#STATUS-FOREGROUND BLACK
#STATUS-BACKGROUND LIGHT GRAY
STATUS BAR CLOCK
Normally, the status bar has a clock which is updated each minute.
You may control its behavior by using one of the values "None", "Inuse",
or "Always" in the #CLOCK parameter.
-#CLOCK Always -- disabled.
SECTION 2: INTERESTING OPTIONS
TIMED EVENT HANDLER:
See the manual for this one. Here is the generic format:
-#event <days> <time> <class> <type> <duration> <warning string> <depends>
-55-
REMOTE SYSOP FACILITY:
#sysPassword specifies the file that contains a string that will act
as the password to the remote sysop abilities. If this parameter is not
specified, or if the file is not found, or is unreadable, then remote
sysop abilities are disabled. Only Aides can access remote sysop
abilities, and they must* know the exact password, including the case
of the individual letters.
-#sysPassword "c:\pwd" -- Inactive (note the leading hyphen)
AUDIT:
This parameter specifies where the files CALLLOG.SYS, FILELOG.SYS, and
DOORUSE.SYS end up on your system. Note that the directory specified has
to be a subdirectory of a current directory.
-#AUDITAREA "" -- put CALLLOG.SYS in the current directory
-- (inactive -- note leading hyphen)
ANONYMOUS CALLERS
This parameter, if enabled, logs ANONYMOUS callers from remote in
your CALLLOG.SYS as "<No Login>".
-#ANONYMOUS-SESSIONS
RAM DRIVE HANDLING:
These two parameters control whether or not and where a secondary
message file will reside. If you use this parameter, it should
reference a permanent media file, and the MSGAREA parameter should
reference a RAM drive. MSGAREA will always be both read and written to,
while this one will only be written to; thus, this parameter should
reference the media more sensitive to wear and tear. MIRRORMSG should
be 1 if you wish to use this ability; MSG2AREA then referrnces the
location of the secondary message base.
#MIRRORMSG 0 -- Turn it off for novices
#MSG2AREA "" -- so this is irrelevant while MIRRORMSG
-- is 0
INTERRUPTED MESSAGE AREA:
This parameter specifies where to save interrupted messages for
later completion.
-#HOLDAREA "held" -- inactive
SYSOP MAIL ROUTING:
This parameter specifies the account that Mail> to sysop should be
routed to.
-#sysopName "Me!" -- inactive
-56-
OUTSIDE EDITOR:
These parameters specify what editor the Sysop may use for System
Console message composition, and what area of the disk system to use for
temporary files. If the first is not present, then the <O>utside Editor
is not available; if the second is not present, the current drive and
directory are used for temporary files. See OPER3.MAN and INSTALL3.MAN
for full details.
-#EDITOR "whatever" -- disabled!
-#EDIT-AREA "" -- ditto!
Citadel-86 as a Door:
This parameter lets you tell the installation that Citadel-86 is a
door itself. In this situation, the modem is not initialized, etc...
See OPER3.MAN Section XII for details.
-#ISDOOR -- disabled, no value for this parameter.
CONSOLE TIMEOUT
If you are in the habit of forgetting to logoff when you're at the
console, thus effectively making the system useless until you notice
your indiscretion, you can use this numeric parameter to decide how
many SECONDS the system can be inactive while in CONSOLE mode before
logging the person off at the system console
-#CONSOLE-TIMEOUT 600 -- this would be a 10 minute timeout period
CONSOLE DELAY
Having problems keeping up with Citadel-86 at the console when you're
logged in there because the screen is just so dratted fast? This
parameter is just like .ECD: you can have the system pause for xxx
milliseconds after each character is put out when the user (whoever it
may be) is at the system console.
-#CONSOLE-DELAY 1 -- This would make for a one second delay
SYSOP MAIL
You can archive sysop mail. This string parameter specifies the file
Sysop Mail should be archived to. This includes both Mail> to "sysop"
and mail to the name specified in #sysopName.
-#SYSOP-ARCHIVE "sysop" -- mail archive filename
ANONYMOUS MAIL CONTROLS
Anonymous mail to sysop is occasionally used to abuse systems. This
numeric parameter is used to control the maximum length of anonymous
mail. If an anonymous mail leaver exceeds that length, the user loses
carrier and the mail, instead of being placed in mail, is placed in a
file named ANONMAIL and a message is left in Aide informing you of this
fact.
-#ANON-MAIL-LENGTH 300 -- anonymous folk will have to be brief
-57-
PASSWORD HACKERS
Village Idiots being a pain? This numeric parameter lets you tell
the system to drop carrier on anyone who screws up their password X
times.
#LOGIN-ATTEMPTS 5
SECTION 3: NETWORK PARAMETERS
NETWORK SELECT:
You use this parameter to decide whether or not you are a networking
system. If you set this parameter to 0, then the rest of the parameters
in this section are meaningless, because you are not a networking
system.
#NETWORK 0 -- Disable for novices
YOUR DOMAIN
What domain are we located in? One to a customer, please. See
NETWORK3.MAN for more information on domains.
#nodeDomain "xx"
MAIL ROUTING:
If #RouteMail is 0 then you categorically refuse to route mail for
anyone to anywhere; if 1, then you will route, although you may place
individual limits on certain systems.
#RouteMail 1 -- default, too
MAIL HUB
A mail hub is a system you send all domain-oriented mail to when
you don't know how else to get to the given domains. This string
parameter is the name of a system on your primary nodelist.
-#MailHub "xxxxx" -- local backbone? another backbone?
NEW USER NET PRIVILEGES:
#NewNetPrivs specifies whether or not new users automatically have
net privileges.
#NewNetPrivs 0 -- Nope.
DOMAIN DISPLAY
This very optional parameter lets you customize how the domains on
messages from other systems are displayed. The default is shown
in our example. Note the '%s' MUST be present.
#DomainDisplay " _ %s"
DOMAIN SERVING
You want to be a domain server? This is how you volunteer; set this
parameter to tell what domain you want to serve, and see NETWORK3.MAN on
administrative procedures.
-#ServeDomain "xx" -- make sure you know what you're doing
-58-
NET FILES LOCATION:
You use this parameter to specify where the various network-related
files will be located. It is a string parameter that you use to specify
the drive and directory to put these files.
#NETAREA "c:net" -- an example ONLY
DOMAIN FILES LOCATION
This parameter lets you decide where to put domain-related temporary
files. We recommend you make this different from #NETAREA.
#DOMAINAREA "c:domains"
MAXIMUM SHARED ROOMS:
This parameter selects the maximum number of shared rooms per system.
#SHARED-ROOMS 1
RECEPTION AREA FOR FILES:
The NET_RECEPT_AREA parameter specifies the directory that files sent
to this installation Via the Send File feature of the net will be placed
in. Do NOT end it with a '\'!
#NET_RECEPT_AREA "C:\citadel\recept" -- Just an example
RECEPTION DIRECTORY SIZE:
The parameter NET_AREA_SIZE allows the sysop to specify how much room
should be allocated for the NET_RECEPT_AREA parameter. This allows the
sysop to ensure that his system isn't swamped by files sent by other
systems. The NET_AREA_SIZE parameter should be in K. (Remember, this
should be in hex.)
#NET_AREA_SIZE 500
INCOMING FILES SIZES:
The MAX_NET_FILE parameter allows the sysop to decide how large of a
file the system will accept from another system when the file is sent
by the other system (this does NOT apply to Requesting a file, only to
accepting a file Sent with the Send Net feature). This parameter is
also in K.
#MAX_NET_FILE 300
MODEM DIALOUT:
callOutPrefix determines what is output to the modem prior to
the phone number to be dialed. It must send all commands necessary
to put the modem into dial out mode. Additionally, it must contain
what is neceessary in the way of special commands dealing with PBX's,
etc.
#callOutSuffix determines what is output to the modem after
-59-
#callOutPrefix and the phone number has been output. Graphically,
<#callOutPrefix><phone#><#callOutSuffix>
is the sequence in which data is out when the networker tries
to dial out. Since nothing is automatically appended to the
number when it is being output to the modem during networking,
the typical value for an installation using a Hayes/compatible is
#callOutSuffix "\r"
since Hayes/compatibles require a C/R to end a command string.
This may not hold true for other brands of modems.
#callOutPrefix "ATDT" -- Normal Hayes installation w/ TT.
#callOutSuffix "\r" -- Typical Hayes suffix
SPECIAL CALL OUT STRINGS
Sometimes, for special baud rates, you want to use a different dialout
string than what you're using #callOutPrefix. These parameters can
be used for that.
-#DialOut300 ""
-#DialOut1200 ""
-#DialOut2400 ""
-#DialOut4800 ""
-#DialOut9600 ""
-#DialOut14400 ""
-#DialOut19200 ""
SCANNING INCOME NET MESSAGES
Tired of profanity coming in on the net? If this parameter is
enabled, then incoming net messages are scanned against BADWORDS.SYS,
and those failing the test are discarded with an appropriate note in
the Aide> room.
-#SCAN-NET-MESSAGES
SECTION 4: SPECIAL REQUIREMENT HANDLING
NOTE: If you think you have an odd modem setup, such as a
non-standard cable for allowing direct access to a high-speed pin, then
consult the Citadel-86 SYSOP MANUAL, Section II.5.d, which details what
abilities are available in this section of CTDLCNFG.SYS. If that
section is not clear, or doesn't seem to handle your particular problem,
try to contact Hue, Jr. on the C-86 Test System (612) 470-9635 for help,
or his successors.
#alldone x x -- end of file
-60-